版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2018.11.24 星期六 |
前言
做了好幾個APP,碰到了大大小小的很多坑,以前碰到坑,解決了就結束了,這里想把自己碰到的坑記錄下來,一來給自己備查二來希望可以幫助到大家。感興趣的可以關注下,也歡迎大家補充留言,感興趣的看上面幾篇文章。
1. 我的代碼我的坑(一) —— 自簽名證書導致請求取消的問題(一)
2. 我的代碼我的坑(二) —— UIImageView動畫點擊后動畫和圖片消失的問題(一)
3. 我的代碼我的坑(三) —— iOS9系統WKWebView加載頁面白板的問題(一)
問題描述
最近又發了一版,其中遇到了各種各樣的問題,有的還很奇葩。這里我們就說一下我碰到的問題,由于項目中要使用漸變色的UISwitch,于是我就自定義一個UISwitch,并在上面添加一個CAGradientLayer
,但是提測QA就發現了一個問題,那就是對于iOS 12系統,當手機橫屏的時候,這個自定義的UISwitch控件關閉的狀態就異常了,豎屏或者其他系統手機橫豎屏均無問題。
問題解決
這個奇葩問題,我想了很久也想不明白。最后在嘗試中修好了,但是還是不知道為什么是這樣的。
首先我們看一下關鍵代碼
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.gradientLayer = [CAGradientLayer layer];
self.gradientLayer.startPoint = CGPointMake(0, 0);
self.gradientLayer.endPoint = CGPointMake(1.0, 0);
[self.layer insertSublayer:self.gradientLayer atIndex:0];
[self setDefaultUI];
}
return self;
}
- (void)setDefaultUI {
self.layer.borderWidth = 0;
self.layer.cornerRadius = self.height / 2.0;
self.layer.masksToBounds = YES;
self.backgroundColor = [UIColor clearColor];
}
- (void)updateGradientBGColor:(NSArray *)colors
{
NSMutableArray *array = [NSMutableArray array];
for (UIColor *color in colors) {
[array addObject:(__bridge id)color.CGColor];
}
self.gradientLayer.colors = array;
[self setNeedsDisplay];
}
上面這個就是設置自定義UISwitch'的關鍵代碼,下面這句就是使用的時候更新漸變色。
//更改自定義UISwitch的漸變layer的顏色
- (void)changeSwitchLayerColorWithSwitch:(JJGradientSwitch *)swicth
{
if (swicth.on == NO) {
[self.LinkmicSwitch updateGradientBGColor:@[[UIColor whiteColor]]];
}
else{
[self.LinkmicSwitch updateGradientBGColor:@[[UIColor colorForHex:@"FF5CBF"], [UIColor colorForHex:@"FFCD7F"]]];
}
}
這里就是關閉的時候是白色的layer,打開的時候就是一個自定義的漸變色。
最后是進行了嘗試性的修復,還真起了作用,但是原因我是還沒想明白。
[self.LinkmicSwitch updateGradientBGColor:@[[UIColor whiteColor]]];
修改成
[self.LinkmicSwitch updateGradientBGColor:@[[UIColor whiteColor], [UIColor whiteColor]]];
也就是盡管你要純色,但是不能數組中只有一個元素,復制一下要兩個元素就都好了。唯一想不明白的就是為什么,但是起作用了。不明白為什么iOS 12系統豎屏以及其他系統的橫豎屏均沒有問題,就這個iOS 12系統的橫屏有問題。
僅以此文記錄一下,有知道的或者遇到相同問題的可以解惑。
后記
本篇主要講述了iOS12系統自定義漸變色UISwitch手機橫屏的異常問題,感興趣的給個贊或者關注~~~