-
如题:IOS8正式版发布后,原来的项目很多,都出现了各种各样的问题。
正如苹果官方所说,IOS8,对于开发者来说会有很大的变化
这里做个收集,目前只碰到几个。记录一下:
1.UITableviewCell
内存不断增加。找了很久原因。后来一步一步的寻下去,发现是以下问题
- (void)layoutSubviews
之前,因为IOS7设置了accessoryView后,contentView回被向前移动。为了让contentView位置不变,所以在该方法中,使用了1.
[
super
layoutSubviews];
2.
// IOS8 开始,会引起循环。所以只在IOS8以前执行
3.
if
(need) {
4.
CGRect frmContentview = self.contentView.frame;
5.
frmContentview.size.width = CGRectGetWidth(self.bounds);
6.
self.contentView.frame = frmContentview;
7.
}
解决方法:使用了self.contentView.superView。并且在
01.
- (
void
)setSelected:(BOOL)selected animated:(BOOL)animated
02.
{
03.
[
super
setSelected:selected animated:animated];
04.
[self.contentView.superView setBackgroundColor:self.contentView.backgroundColor];
05.
// Configure the view for the selected state
06.
}
07.
- (
void
)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
08.
{
09.
[
super
setHighlighted:highlighted animated:animated];
10.
[self.contentView.superView setBackgroundColor:self.contentView.backgroundColor];
11.
}
这样颜色就比较统一了。其他的正常使用就可以了。2.NSUserDefaults
这个东西真的很蛋疼。clean下项目,删除模拟器APP。重新运行后,
发现取到的BOOL值或都其他,基本都跟未删除时一样。经过google,最终找到IOS8的模拟器,如果删除了app,貌似NSUserDefaults是不会重置的。
所以,只有重新reset下模拟器。重试后发现,还真的是这么回事。真机还没有测试。
3.键盘。
不管是textField还是textView都可以看到光标在跳动。但是键盘就是不出来。
纠结了了1个多小时,找各种原因,google了很久。最后,在第2点重置后发现,恢复正常。瞬间无语
4.UIAlertView
UIAlertView如果设置title为nil。会发现字体变黑,设为@""就可以了
5.重名问题
新建了一个类继承自NSObject。并且声明了一个delegate的protocol。
结果,在使用的时候发现指向了NSFileManagerDelegate。
这个是因为在IOS8的SDK中,NSObject类存在一个delegate的声明。重名就改名,解决
6.UIScrollview
很多人在IOS6升级IOS7的时候应该碰到过UIScrollview不能滑动的问题。网上的方法都是这样的在viewWillAppear 或者 viewDidAppear 中加入,
[self.tableview setContentOffset:CGPointMake(0, CGFLOAT_MAX) animated:YES];
但是在IOS8里面,发现这种话,也会引起界面卡死所以大家可以使用以下方法解决
1.
if
(self.tableview.contentSize.height > self.tableview.bounds.size.height) {
2.
[self.tableview setContentOffset:CGPointMake(
0
, self.tableview.contentSize.height) animated:YES];
3.
}
7.BadgeNumber
更新APP徽标的时候,在IOS8中需要授权,否则可能出错。或提示
Attempting to badge the application icon but haven't received permission from the user to badge the application
01.
#ifdef SUPPORT_IOS8
02.
if
([[[UIDevice currentDevice] systemVersion] floatValue] >=
8.0
) {
03.
UIUserNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
04.
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];
05.
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
06.
}
else
07.
#endif
08.
{
09.
UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;
10.
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];
11.
}
SUPPORT—IOS8__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000
============================================其他碰到慢慢补充================================================
iOS8问题
最新推荐文章于 2023-04-01 19:32:16 发布