我几乎完成了开发我的应用程序。现在我试图让它在iPhone 4和5中看起来都很好。
我试图获得我的scren的高度,但以下方法不起作用。 有什么想法吗?
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
if (screenSize.height == 1136) {
NSLog(@"iphone 5");
}else if(screenSize.height == 960){
NSLog(@"iphone 4 retina");
}else{
NSLog(@"iphone 4 non retina");
}
这是完整的viewWillAppear方法:
- (无效)viewWillAppear中:(BOOL)动画 { [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
NSLog(@"%@",NSStringFromCGSize(screenSize));
if (screenSize.height == 568.0f) {
NSLog(@"iphone 5");
}else if(screenSize.height == 480.0f){
NSLog(@"iphone 4 retina");
}else{
NSLog(@"iphone 4 non retina");
}
[firstStepsButton.titleLabel setHidden:YES];
[workingButton.titleLabel setHidden:YES];
[accommodationButton.titleLabel setHidden:YES];
[universityButton.titleLabel setHidden:YES];
[meetMeButton.titleLabel setHidden:YES];
[improveYourselfButton.titleLabel setHidden:YES];
self.navigationController.navigationBarHidden = TRUE;
// self.view.backgroundColor = [UIColor colorWithRed:2 / 255.0f green:42 / 255.0f blue:97 / 255.0f alpha:1.0f];
[super viewWillAppear:animated];
}
答案 0 :(得分:0)
不会因为屏幕的坐标系是点,而不是像素。试试这样:
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
NSLog(@"%@",NSStringFromCGSize(screenSize));
if (screenSize.height == 568.0f) {
NSLog(@"iphone 5");
}else if(screenSize.height == 480.0f){
NSLog(@"iphone 4 retina");
}else{
NSLog(@"iphone 4 non retina");
}
你还应该考虑使用UIDevice的userInterfaceIdiom
来检查设备是否是iPhone / iPad,以及UIScreen的scale
来判断设备是否是视网膜。
答案 1 :(得分:0)
考虑下载Xcode 5 DP,他们在Interface Builder中修复了Autolayout的管理。现在,设置和管理约束非常容易。尝试一下。