我正面临着一个我无法弄清楚的无聊烦恼。我被要求为系统版本> = 7.0上运行的iOS应用调整一些UI元素。在运行iOS 7.x的iPhone 4S上,应用程序布局看起来很好,但在运行iOS 8.x的iPhone 6上显示为向右移动。该应用程序使用故事板,但没有使用自动布局(这可以解决这个问题)。
问题在于我有另一个稍微修改过的项目,在iPhone 6上显得很好,但视图控制器的大小没有明显变化。
我有没有机会找到理解为什么我会遇到这种奇怪的行为?我也尝试使用FileMerge发现两个项目之间的任何可能的差异,但我没有发现与布局有关的任何内容。我甚至通过在项目范围内直接搜索IPHONE
来检查iPhone 6是否有任何自定义配置,但我没有发现任何相关内容。
请帮帮我。找到下面附带的混乱布局的屏幕截图。我已准备好向您提供您需要的任何其他信息。
答案 0 :(得分:0)
您可以使用自动布局,或在viewController
的{{1}}中将每个组件的框架更改为:viewDidAppear
这应该可以解决问题。
答案 1 :(得分:0)
使用以下宏并检索设备类型。
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPOD ( [[[UIDevice currentDevice ] model] isEqualToString:@"iPod touch"] )
#define IS_HEIGHT_GTE_568 [[UIScreen mainScreen ] bounds].size.height >= 568.0f
#define IS_IPHONE_5 ( IS_IPHONE && IS_HEIGHT_GTE_568 )
#define IS_IOS_7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f)
#define IS_IOS_8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0f)
#define IS_IOS_8_LOWER ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0f)
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))
#define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH <= 568.0)
#define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)
以下代码可能有助于解决您的问题。
if(IS_IPHONE_4_OR_LESS){
self.view.frame = CGRectMake(x, y, width,height);// Frame for 4s
}else if(IS_IPHONE_6){
self.view.frame = CGRectMake(x, y, width,height);// Frame for 6
}else{
self.view.frame = CGRectMake(x, y, width,height);// Frame for 6P
}
愿这对你有所帮助。
答案 2 :(得分:0)