原文:https://www.jianshu.com/p/e6ef6eb04c6aios
tintColor: 開關處於關閉狀態時邊框的顏色(注意這邊是邊框的顏色) onTintColor: 開關處於開啓狀態時的顏色 thumbTintColor: 開關的狀態鈕顏色 onImage: 開關處於開啓狀態時的圖片(iOS7及以後設置無效) offImage: 開關處於關閉狀態時的圖片(iOS7及以後設置無效) backgroundColor:整個開關背景色,設置後能夠明顯看到一個矩形背景
iOS系統內置了UISwithch控件的size,因此經過代碼調整UISwithch的大小無效.git
默認大小 51.0f 31.0f
tintColor屬性 只能調整off狀態的邊框顏色像這樣:github
-(UISwitch *)switchFunc{ if(_switchFunc == nil){ _switchFunc = [[UISwitch alloc]init]; [_switchFunc setTintColor:HEXCOLOR(0x99999)]; [_switchFunc setOnTintColor:HEXCOLOR(kBlueColor)]; [_switchFunc setThumbTintColor:[UIColor whiteColor]]; _switchFunc.layer.cornerRadius = 15.5f; _switchFunc.layer.masksToBounds = YES; [_switchFunc addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged]; } return _switchFunc; }
結果就像這樣ide
開啓狀態.net
關閉狀態code
方法:
1.設置switch的背景色orm
2.設置圓邊角blog
細看你會發現右邊多了點,和咱們要的效果不同
3.調整控件大小圖片
49.0f, 31.0f
最終效果圖get
OK
下面是核心代碼:
-(UISwitch *)switchFunc{ if(_switchFunc == nil){ _switchFunc = [[UISwitch alloc]init]; [_switchFunc setBackgroundColor:HEXCOLOR(0x999999)]; [_switchFunc setOnTintColor:HEXCOLOR(kBlueColor)]; [_switchFunc setThumbTintColor:[UIColor whiteColor]]; _switchFunc.layer.cornerRadius = 15.5f; _switchFunc.layer.masksToBounds = YES; [_switchFunc addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged]; } return _switchFunc; } [_switchFunc mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.contentView); make.size.mas_equalTo(CGSizeMake(49.0f, 31.0f)); make.right.mas_equalTo(self.contentView).with.offset(-12.0f); }];
setFrame 方法並不能更改它的大小。
UISwitch *sw = [[UISwitch alloc]initWithFrame:CGRectMake(200, 15, 50, 15)]; sw.transform = CGAffineTransformMakeScale( 0.5, 0.5);//縮放
1.1 CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) 這個方法能夠方便的對view的長和寬進行縮放,不改變view的中心點。注意!中心點不變指的是物理位置不變,不是座標,由於座標系此時已經發生改變 1.2 CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy) 這個方法一樣是view的長和寬進行縮放,效果相似CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)不一樣的是這個方法能夠疊加其餘CGAffineTransform效果(好比旋轉)
一個用圖片實現的switch庫,動態效果相對系統 差點,可定製性高
TTSwitch
一個比較有味的第三方庫
LLSwitch