APP兼容64位之后,UIImageView等控件不显示,图片等内容不显示

作者 john 日期 2016-11-15 阅读量
APP兼容64位之后,UIImageView等控件不显示,图片等内容不显示

Mark:

距离上次给一个APP升级 兼容64位 过去很长时间了,今天又遇到一个,本来觉得很easy的,更新sqlcipher、jsonkit、不合适的静态库就好了,具体见我另一篇


### 诡异问题:

但是问题来了,所有配置工作做好了,也跑起来了,但是APP里的内容呢?word哥!!!空白一片,按钮不见了,图片不见了,,,各种控件不见了。但是诡异也很关键的是:空白处有响应事件的按钮,cell都可以点击

推测:

那么内容不显示,但是事件可以点击,是不是很像我们经常处理的alpha=0的情况?我检查N遍,并没有设置任何控件alpha=0,但是别忘了,alpha值是CGFloat类型,而我在Xcode警告栏里发现了修改为64位之后N多个警告,例如:Implicit conversion loses integer precision:‘NSInteger’ to ‘int’或者是‘CGFloat’to ‘float’诸如此类。


那么会不会是alpha值由于‘CGFloat’to ‘float’失败,而导致默认设置alpha=1失败,变成了alpha=0呢?

定位问题:

终于在这里找到了答案


大概意思就是,下面这个不再适用于64位,需要将float改为CGFloat,也证实了我的猜想


1
2
3
4
- (void)setAlpha:(float)alpha {
..........(no difference if here is some code or not) ...............
[super setAlpha:alpha];
}


### 解决:

根据stackoverflow提供的方法,只需要写一个UIImageView的 category:UIImageView+(UIScrollerView),重写上面的方法即可:

1
2
3
4
5
@implementation UIImageView (UIScrollView)
- (void)setAlpha:(CGFloat)alpha {
[super setAlpha:alpha];
}
@end