四、URL Scheme白名单
在iOS9中,apple引入了白名单这个概念,其好处是对app应用内安全进行了加强。在iOS9的适配中,如果我们用到canOpenURL这样的方法,则需要配置白名单。
首先,我们创建一个测试工程,什么都不用做,只需要添加一个URL Scheme:
在另一个工程中,我们写如下代码:
BOOL can= [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"TEST://"]];
NSLog(@"%d",can);
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"TEST://"]];
在没有配置白名单之前,打印如下:
可以看到,bool值返回的是NO。虽然这样也可以跳转相应的APP,但是canOpenURL这个方法相当于失效了,我们不能用它来判断用户到底装没装这个app。
适配时,我们在plist文件中添加如下键值:
这时再次运行程序,canOpenURL的判断就会准确了。
注意:白名单添加上限为50个。
五、label默认字体不同产生的BUG
iOS9的另一变化是label的默认字体产生了变化,我们打印iOS9中label的字体如下:
iOS8中的label默认字体如下:
这两种字体的最大差异是字间距不同,例如如下一段代码:
UILabel * label = [[UILabel alloc]init];
label.frame=CGRectMake(100, 100, 100, 30);
[self.view addSubview:label];
label.backgroundColor= [UIColor redColor];
label.text=@"1111111111111";
这段代码在iOS9上是刚好可以正常显示的,在iOS8上则不行,如下:
iOS9:
iOS8:
适配注意点:
1、可以通过动态计算来获取label的宽度,进行设置label的宽度
2、一个更简单的方法是通过设置一个确定的字体,来进行适配