IOS自定義UIView
IOS中一般會(huì)用到幾種方式自定義UIView
1、繼承之UIView的存代碼的自定義View
2、使用xib和代碼一起使用的自定義View
3、存xib的自定義View(不需要業(yè)務(wù)處理的那種)
本文主要就介紹下存代碼的自定義UIView和能夠在storeboard中實(shí)時(shí)顯示效果的自定義UIView
先上效果圖
上面為設(shè)計(jì)界面,能夠直接顯示一個(gè)View的圓角與邊框線
上面那個(gè)圓形餅圖是用純代碼自定義的
1.實(shí)現(xiàn)在storeboard中實(shí)時(shí)顯示效果的自定義UIView
1、創(chuàng)建MyView.h 繼承 UIView
#import <UIKit/UIKit.h> // 設(shè)置類為可視化設(shè)計(jì) IB_DESIGNABLE @interface MyView : UIView // IBInspectable 為可視化設(shè)計(jì)屬性 // 邊框?qū)挾? @property (nonatomic,assign)IBInspectable float borderWidth; // 邊框顏色 @property (nonatomic,retain)IBInspectable UIColor* borderColor; // 圓角 @property (nonatomic,assign)IBInspectable float cornerRadius; @end
這里要注意的就是上面的兩個(gè)關(guān)鍵標(biāo)簽
IB_DESIGNABLE :代表的是這個(gè)類可以在storeboard中顯示實(shí)時(shí)的效果
IBInspectable :代表把這個(gè)屬性能在storeboard中修改
2、MyView.m的實(shí)現(xiàn)
// // MyView.m // 01_CirProgress // // Created by xgao on 15/10/29. // Copyright (c) 2015年 xgao. All rights reserved. // #import "MyView.h" @implementation MyView // 邊框?qū)挾? - (void)setBorderWidth:(float)borderWidth{ self.layer.borderWidth = borderWidth; } // 邊框顏色 - (void)setBorderColor:(UIColor *)borderColor{ self.layer.borderColor = borderColor.CGColor; } // 圓角 - (void)setCornerRadius:(float)cornerRadius{ self.layer.cornerRadius = cornerRadius; } @end
3、在storeboad中添加一個(gè)view,并且設(shè)置這個(gè)view的類為 我們剛才創(chuàng)建的 MyView
上圖里面的那些屬性就是我們?cè)?h文件里面加了IBInspectable關(guān)鍵字的屬性,這里就能實(shí)時(shí)修改看效果了。
2.實(shí)現(xiàn)純代碼的自定義View
1、創(chuàng)建一個(gè)繼承UIView的 MyProgress 類文件,MyProgress.h 如下:
#import <UIKit/UIKit.h> @interface MyProgress : UIView // 當(dāng)時(shí)進(jìn)度值 @property (nonatomic,assign) float progressValue; @end
2、MyProgress.m 如下:
#import "MyProgress.h" @implementation MyProgress { float _proValue; } // 重寫初始化方法 - (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // 設(shè)置背影為透明色 self.backgroundColor = [UIColor clearColor]; } return self; } // 重設(shè)progressValue屬性 - (void)setProgressValue:(float)progressValue { _progressValue = progressValue; // 重新畫UI [self setNeedsDisplay]; } // 繪圖 - (void)drawRect:(CGRect)rect { // 獲取畫圖的上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); /**** 繪制圓形背景線 ****/ // 圓的半徑 float r = rect.size.width / 2.0; // 全圓 CGFloat endAngle = M_PI * 2; // 畫圓形線 CGContextAddArc(ctx, r, r, r, 0, endAngle, 0); // 背影顏色 CGContextSetRGBFillColor(ctx, 0.7, 0.7,0.7, 1); // 完成繪制 CGContextFillPath(ctx); /**** 繪制扇形區(qū)域 ****/ // 計(jì)算結(jié)束角度 endAngle = M_PI * 2 * _progressValue; /** 畫圓 * 參數(shù)1:c 當(dāng)前上下文 * 參數(shù)2:x 圓的X坐標(biāo) * 參數(shù)3:y 圓的Y坐標(biāo) * 參數(shù)4:radius 圓的半徑 * 參數(shù)5:startAngle 開始角度 * 參數(shù)6:endAngle 結(jié)束角度 * 參數(shù)7:clockwise 是否逆時(shí)針 */ CGContextAddArc(ctx, r, r, r, 0, endAngle, 0); // 連成線,成弧形 CGContextAddLineToPoint(ctx, r, r); // 其實(shí)就是在連接的那條線上加一個(gè)點(diǎn),讓線條連接到那一個(gè)點(diǎn),就像拉弓,可加多個(gè)點(diǎn) // CGContextAddLineToPoint(ctx, r + 20, r + 20); // 填充顏色 CGContextSetRGBFillColor(ctx, 0, 0, 1, 1); // 完成繪制 CGContextFillPath(ctx); }
3、調(diào)用自定義的MyProgress類
#import "MyProgress.h" @interface ViewController () { MyProgress* _myProView; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 創(chuàng)建自定義控件 _myProView = [[MyProgress alloc]initWithFrame:CGRectMake(100, 50, 180, 180)]; // 默認(rèn)進(jìn)度 _myProView.progressValue = 0.2; [self.view addSubview:_myProView]; }
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
ios 實(shí)現(xiàn)倒計(jì)時(shí)的兩種方式
這篇文章主要介紹了ios實(shí)現(xiàn)倒計(jì)時(shí)的兩種方式,第一種方式使用NSTimer來(lái)實(shí)現(xiàn),第二種方式使用GCD來(lái)實(shí)現(xiàn)。具體內(nèi)容詳情大家參考下本文2017-01-01IOS 開發(fā)之網(wǎng)絡(luò)圖片輪播圖的實(shí)現(xiàn)
這篇文章主要介紹了IOS 開發(fā)之網(wǎng)絡(luò)圖片輪播圖的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)此文大家能夠掌握輪播圖的實(shí)現(xiàn),需要的朋友可以參考下2017-09-09實(shí)例講解iOS音樂(lè)播放器DOUAudioStreamer用法
本篇文章給大家通過(guò)實(shí)例講解了iOS音樂(lè)播放器DOUAudioStreamer用法以及分享了實(shí)例代碼,一起學(xué)習(xí)參考下吧。2017-12-12iOS動(dòng)畫-定時(shí)對(duì)UIView進(jìn)行翻轉(zhuǎn)和抖動(dòng)的方法
下面小編就為大家?guī)?lái)一篇iOS動(dòng)畫-定時(shí)對(duì)UIView進(jìn)行翻轉(zhuǎn)和抖動(dòng)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04基于iOS實(shí)現(xiàn)音樂(lè)震動(dòng)條效果
這篇文章主要為大家詳細(xì)介紹了基于iOS實(shí)現(xiàn)音樂(lè)震動(dòng)條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07iOS應(yīng)用開發(fā)中使用UIScrollView控件來(lái)實(shí)現(xiàn)圖片縮放
這篇文章主要介紹了iOS開發(fā)中使用UIScrollView控件來(lái)實(shí)現(xiàn)圖片縮放的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼
本篇文章主要介紹了iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05