版本记录
版本号 | 时间 |
---|---|
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手机横屏的异常问题,感兴趣的给个赞或者关注~~~