今天遇到的坑(屏幕适配问题,UIAlertView问题),以及s
屏幕适配问题
在做EyptBeacon项目时,在storyboard中使用AutoLayout和SizeClasses做的屏幕适配和约束,在iPhone 6plus上运行没有问题,后来用测试员的iPhone5 进行测试时,发现进入app后, 屏幕的上方大概时导航栏的位置和屏幕的下方ToolBar的位置留有黑屏,像是没有做屏幕适配一样,后来用模拟器运行,却又没有这样的问题出现。之后查阅的各种方法,最终的解决办法是:给项目添加启动图片,由于本来项目是没有启动图片的,于是,找了几张空白图片添加到启动图片的位置后,再运行在iPhone5设备上,上下部分的黑屏问题得到解决了,但又出现了新的问题,程序进入的第一个控制器是一个带有导航条和tableView的控制器,在storyboard中设置了automaticallyAdjustsScrollViewInsets为YES,在iPhone 6Plus中tableView的位置在navigationBar的下面,但在iPhone5中运行程序时,发现tableView的视图左顶点是在父视图的原点位置,tableView会被navigationBar挡住。之后调试,不管是设置automaticallyAdjustsScrollViewInsets为YES还是NO,都没有效果。最后只好重新设置tableView的frame(0,64,screenWidth,screenHeight),再将automaticallyAdjustsScrollViewInsets设置为YES即可。
UIAlertView问题
else if (([change[NSKeyValueChangeOldKey] intValue] == 35) && ([change[NSKeyValueChangeNewKey] intValue] == 36)) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:NSLocalizedString(@"the length of uuid is 32", nil) delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
情景是,在键盘输入到36个字符时,推出一个提示框,但在实际的真机测试中,发现,当输入到36个字符时,会连续推出两次提示框,解决办法:在[alert show];
后面添加一个return;
就不会出现两个提示框的情况的,至于是什么原因导致这种情况发生,还不清楚。
使用storyboard中屏幕预览助手
有的时候,做了屏幕适配和约束,如果要拿不同型号的手机来测试屏幕上的约束效果时很不方便,如果使用屏幕预览助手,就能很方便且直观的看到添加约束后的视图在不同尺寸的屏幕上的效果了,查看屏幕预览助手的步骤是:
- 点击storyboard左上角按钮
- 点击Preview
- 按着键盘的option + shift键,点击相应的storyboard
- 双击右边的加号按钮,添加预览窗口
此时就可以看到屏幕预览的窗口啦,还能点击左下角的+号,添加不同型号的手机屏幕。这样就可以很方便的看到storyboard中的布局呈现在不同尺寸的屏幕上的效果,而不需要在手机上运行才能看。