如何在iOS6中为iPhone 4和iPhone 5设置框架

5

我想将我的应用更新到iOS 6,那么如何设置框架大小以适应iPhone 4和iPhone 5的屏幕?


我有同样的问题。 - Jaspreet Singh
在创建应用程序时,您可以使用自动布局。教程链接:http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 - Nuzhat Zari
请看一下这个问题,或许会有所帮助。 - Janak Nirmal
5个回答

4
我可以使用计算屏幕尺寸的方法来调整视图的高度,具体方法如下:
+(CGFloat)heightOf:(CGFloat)heightValue{
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];

//NSLog(@"applciation Frame height = %f",applicationFrame.size.height);
CGFloat heightRatio = (heightValue/480)*100;

CGFloat height = (applicationFrame.size.height * heightRatio)/100;
return height;

然后我使用类似于以下的方式:

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0,[Height heightOf:385], 320, 220)];

那么,感谢您的回复。


你好,请问"[Height heightOf:385]"中的Height是什么意思? - user1573321

3

处理这种情况有多种方法。

1> 其中一个方法是正确使用自动调整大小。

2>另一种方法是使用新的自动布局功能,但这只支持iOS 6。

3>您可以为每个视图创建单独的nib文件,一个用于iphone 4,另一个用于iphone 5,并根据运行的设备切换所使用的.xib文件。

目前最好的方法是正确使用自动调整大小。

更多信息,请参见以下内容

1> 支持iOS 4.3至iOS 6.0

2> 如何支持iPhone4和iPhone5的屏幕分辨率? - 自动布局仅适用于iOS 6


1
以下代码检查 iPhone 5 和其他设备。
#define IS_IPHONE ( [[[UIDevice currentDevice] model] isEqualToString:@"iPhone"] )
#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 )

并查看更多详细信息,请参考问题。


0

AutoLayout 对我来说效果不太好。我的应用程序有几个元素需要均匀间隔。

一个快速解决方案(不是很好的做法)是在屏幕高度检查时单独分配坐标。 (顺便说一句,那是一个很好的教程。可惜苹果还没有为 IOS 提供实质性的东西)。

如果您的屏幕上有多个元素,则我认为您将不得不逐个重新放置它们。

CGFloat height = [UIscreen mainScreen].bounds.size.height;
if(height==568.00){
self.imageName.frame = CGRectMake(x,y,width,height);
...
}

对于出现在窗口中心的模态或浮动屏幕,您可以尝试以下方法:
self.imgBadgeArea.frame = CGRectMake(self.view.bounds.size.width/2- self.imgBadgeArea.bounds.size.width/2, self.view.bounds.size.height/2 - self.imgBadgeArea.bounds.size.height/2, self.imgBadgeArea.bounds.size.width, self.imgBadgeArea.bounds.size.height);

适用于3.5英寸和4英寸设备。


0

您可以检查设备类型链接,或者检查视图帧是否大于iPhone 4/4s上的普通视图帧,然后调整您的帧大小。

注:我使用第二种方法,它很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接