به نام خدا

اگر آموزش قبلی رو نخوندید نگران نباشید چون این دو قسمت به همدیگه بی ربط هستند و نیازی به خوندن آموزش قبلی نیست

مستقیم میریم سراغ آموزش.

برای ساختن یه ویویی که همشو خودتون بسازید و تا حالا ساخته نشده باید تقریبا ریاضیتون خوب باشه چون اینجا با نقطه و خط سروکار داریم

یه فایل جدید ایجاد کنید که از UIView ارث بری کنه و توش تابع draw رو override کنید.

این تابع کار رسم رو برعهده میگیره رسم هرچیزی که شما بخواید یعنی هرچیزی که شما بخواید به کاربر نشون بدید باید اینجا رسم بشه (یادتون باشه وقتی این تابع رو بازنویسی میکنید دیگه اون layer.cornerRadius ها جواب نمیده و اگر لازم به لبه های گرد باشه باید خودتون توی این تابع بسازید)

قبل از ادامه کار باید بگم این تابع یه CGRect به شما میده که توی این متغییر اندازه ویو وجود داره یعنی طول و عرض ویو رو میتونید از این متغییر بدست بیارید

۱. نوشتن متن:

برای نوشتن یه متن باید از کد زیر توی تابع draw استفاده کنید:

        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.alignment = .center
        let attr : [NSAttributedString.Key:Any] = [
            .paragraphStyle: paragraphStyle,
            .font : UIFont.systemFont(ofSize: 12),
            .foregroundColor : UIColor.white
        ]
        let stringforDraw = NSAttributedString(string: self.persianText, attributes: attr)
        stringforDraw.draw(in: CGRect(x:0,y:0,width:100,height:100))

کد بالا رو بهتره از پایین به بالا بخونید تا بهتر متوجه بشید.

اول از همه بدونید که هرچی رو که بخواید رسم کنید باید همونو بنویسید و جلوش یه نقطه بزارید و بنویسید draw(in و بهش یه rect بدید  و همونجوری که میبینید rect محل رسم رو به ما نشون میده یعنی x و y شروع و عرض و ارتقاع چیزی که میخوایم رسم کنیم

۲. رسم خط:

       var aPath = UIBezierPath()
        aPath.lineWidth = 10
        aPath.move(to: CGPoint(x:0, y:0))
        aPath.addLine(to: CGPoint(x:rect.width , y:rect.height))
        aPath.close()
        UIColor.white.set()
        aPath.stroke()

خب با این کلاس اشنا بشید UIBezierPath چون هرشکلی که به ذهنتون میرسه رو باید با همین رسم کنید

اول میسازیم و توی یه متغییر میریزیم بعد اندازه خط رو مشخص میکنیم و در خط بعد اشاره گرش رو میاریم روی نقطه (0,0) و در خط بعدیش هم یه خط میکیشم از همینجایی که اشاره گر هست تا پایین سمت راست یعنی یه خط مورب از بالا سمت چپ تا پایین سمت راست بعدم میبندیمش که دیگه تغییری توش ایجاد نشه و بعد با UIColor.white.set() رنگ مون رو به سفید تغییر میدیم و در نهایت با خط آخر خطمون رو رسم میکنیم

دقت کنید که خط یه چیزیه که نمیشه بهش استراک داد یعنی خط فقط یه چیز بسیار باریکه و این stroke هست که باعث میشه ببینیمش پس اگر از fill استفاده کنید چیزی نمیبینید و چیزی رسم نمیشه

۳.رسم دایره

var path = UIBezierPath(
            arcCenter: CGPoint(x: rect.width/2, y: rect.height/2),
            radius: 40,
            startAngle: 0,
            endAngle: 2 * .pi,
            clockwise: true)
        UIColor.white.setStroke()
        path.lineWidth = 10
        path.stroke()

با همون UIBezierPath میتونیم دایره یا هر نیم دایره از یه زاویه تا یه زاویه رو رسم کنیم (خییییلی خوبه)

برای رسم چیز های دیگه هم میتونید از همین کلاس استفاده کنید.

موفق باشید 

یاعلی