同样的布局,在4 5上没问题,但是5s 6 6s 6p都有问题
2016-03-31 11:44
423 查看
今天遇到了一个奇葩的问题。其实,到现在也不是特别理解其中的原理,由于时间匆忙,还是先记录一下,等以后有时间再去找原因吧。
以前,写页面为了一些控件不被循环引用,所以,在写属性的时候
@property (nonatomic,
weak) UIImageView *passwordImageView;
给这个控件一个week属性。但今天结结实实的在这个上边栽了一个大跟头,愣是找了半个多小时。解决办法是改成strong
首先,我定义的这个控件,作为一个密码输入的背景图。然后开始在上边写代码,一些普普通通的代码,大概类似下边
UIImage *phoneImage = [UIImage
imageNamed:@"login_input_textField"];
self.userPhoneImageView = [[UIImageView
alloc]
init];
self.userPhoneImageView.frame =
CGRectMake(0,treeImageView.bottom+ kTextFieldHeight/2-kLoginUserNameHeight/2,phoneImage.size.width,
phoneImage.size.height);
self.userPhoneImageView.image = phoneImage;
self.userPhoneImageView.userInteractionEnabled
= YES;
self.userPhoneImageView.centerX =
mainScrollView.centerX;
[mainScrollView
addSubview:self.userPhoneImageView];
//号码
UIImage *loginUserImage = [UIImage
imageNamed:@"login_userIcon"];
UIImageView *phoneImageView = [[UIImageView
alloc] initWithFrame:CGRectMake(15,phoneImage.size.height/2-loginUserImage.size.height/2,
loginUserImage.size.width, loginUserImage.size.height)];
phoneImageView.image = [UIImage
imageNamed:@"login_userIcon"];
[self.userPhoneImageView
addSubview:phoneImageView];
由于我一边做一边看效果,而且是在iphone5的模拟器上运行效果的。效果没问题
由于工作原因就不上传图片了。最后这个页面做完了,开始换个钟模拟器运行,4s 5都没有问题,然后切换到5s的时候,所有页面布局都到一起去了。然后换6 6s 6p发现都有这个问题。这是怎么回事。一样的代码,我也加入了2x 3x图片,怎么就到了5s 6 6s 6p上就出现问题了呢。
然后,开始断点调试,调试过程发现这个背景图片的起始点为0,0.这真是见鬼了。打印图片大小,位置啥的都有。说明不是图片的问题。然后,找是不是自己在哪里改动背景图片的坐标了,但是,一想不对啊。4s 5上没问题的。说明不是我坐标的问题。
然后,循环的看代码,突然在自己经常写,习以为常的地方看到了@property (nonatomic, weak) UIImageView *passwordImageView;这里是week属性。难道是系统给我在创建后释放了?然后,把week改成strong,运行,5s
6 6s 6p都正常了。当时,心里就想发飙。同样的代码,在不同的模拟器上表现两种形式。这是什么鬼,由于时间急,也就先把问题纪录下,以后再探讨。如果你知道为什么会有这个结果,帮忙回答下,在此谢过~~
以前,写页面为了一些控件不被循环引用,所以,在写属性的时候
@property (nonatomic,
weak) UIImageView *passwordImageView;
给这个控件一个week属性。但今天结结实实的在这个上边栽了一个大跟头,愣是找了半个多小时。解决办法是改成strong
首先,我定义的这个控件,作为一个密码输入的背景图。然后开始在上边写代码,一些普普通通的代码,大概类似下边
UIImage *phoneImage = [UIImage
imageNamed:@"login_input_textField"];
self.userPhoneImageView = [[UIImageView
alloc]
init];
self.userPhoneImageView.frame =
CGRectMake(0,treeImageView.bottom+ kTextFieldHeight/2-kLoginUserNameHeight/2,phoneImage.size.width,
phoneImage.size.height);
self.userPhoneImageView.image = phoneImage;
self.userPhoneImageView.userInteractionEnabled
= YES;
self.userPhoneImageView.centerX =
mainScrollView.centerX;
[mainScrollView
addSubview:self.userPhoneImageView];
//号码
UIImage *loginUserImage = [UIImage
imageNamed:@"login_userIcon"];
UIImageView *phoneImageView = [[UIImageView
alloc] initWithFrame:CGRectMake(15,phoneImage.size.height/2-loginUserImage.size.height/2,
loginUserImage.size.width, loginUserImage.size.height)];
phoneImageView.image = [UIImage
imageNamed:@"login_userIcon"];
[self.userPhoneImageView
addSubview:phoneImageView];
由于我一边做一边看效果,而且是在iphone5的模拟器上运行效果的。效果没问题
由于工作原因就不上传图片了。最后这个页面做完了,开始换个钟模拟器运行,4s 5都没有问题,然后切换到5s的时候,所有页面布局都到一起去了。然后换6 6s 6p发现都有这个问题。这是怎么回事。一样的代码,我也加入了2x 3x图片,怎么就到了5s 6 6s 6p上就出现问题了呢。
然后,开始断点调试,调试过程发现这个背景图片的起始点为0,0.这真是见鬼了。打印图片大小,位置啥的都有。说明不是图片的问题。然后,找是不是自己在哪里改动背景图片的坐标了,但是,一想不对啊。4s 5上没问题的。说明不是我坐标的问题。
然后,循环的看代码,突然在自己经常写,习以为常的地方看到了@property (nonatomic, weak) UIImageView *passwordImageView;这里是week属性。难道是系统给我在创建后释放了?然后,把week改成strong,运行,5s
6 6s 6p都正常了。当时,心里就想发飙。同样的代码,在不同的模拟器上表现两种形式。这是什么鬼,由于时间急,也就先把问题纪录下,以后再探讨。如果你知道为什么会有这个结果,帮忙回答下,在此谢过~~
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Linux 自检和 SystemTap
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- Python 七步捉虫法
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- div+css页面布局的五个小技巧
- 讲解WordPress开发中一些常用的debug技巧
- JavaScript程序设计之JS调试
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- jQuery实现切换页面布局使用介绍
- JavaScript高级程序设计 错误处理与调试学习笔记