iphone 3.5寸屏和4寸屏怎么写代码
Posted
技术标签:
【中文标题】iphone 3.5寸屏和4寸屏怎么写代码【英文标题】:how can i write the code for iphone 3.5 inches screen and 4 inches screen 【发布时间】:2013-11-08 06:26:11 【问题描述】:我正在开发一个应用程序。在应用程序中,我编写了 3.5 英寸屏幕的代码。我拿了一个视图控制器;在这个视图控制器中,我想显示两张图像,一张用于顶部(Imagelogo),另一张用于底部(Image Building)。在3.5英寸的屏幕上显示没有问题。但是在4英寸的屏幕上,出现了显示问题。这两个图像显示不正确。我不知道如何为 3.5 和 4 英寸的屏幕编写相同的代码。我可以使用宏吗?请给我一些想法,任何人。我是编程新手。提前致谢。
以下是我的代码。
Viewcontroller.m(3.5 英寸屏幕)
此图像将显示在顶部。
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
此图像将显示在底部
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
【问题讨论】:
请使用自动调整大小属性。 你可以使用自动布局。 你可以使用***.com/questions/18122401/… 使用自动布局根据屏幕尺寸调整图片 How to develop or migrate apps for iPhone 5 screen resolution?的可能重复 【参考方案1】:您可以在界面构建器中的自动调整大小功能或通过代码使用它。
如果您的应用支持 ios 5 及更高版本,您可以使用 Apple 的自动布局系统。
您可以通过代码根据屏幕大小放置图像
if ([[UIScreen mainScreen] bounds].size.height == 568)
//iphone 5 image
else
【讨论】:
【参考方案2】:在您的“Viewcontroller.h”中定义浮点 scaleY;
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
float scaleY;
@end
在你的“Viewcontroller.m”类中
在 [super viewDidLoad] 之后的 viewDidLoad 方法中;为 iPhone 系列中不同屏幕尺寸的设备设置 scaleY 值。
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)])
CGSize result = [[UIScreen mainScreen] bounds].size;
CGFloat scale = [UIScreen mainScreen].scale;
result = CGSizeMake(result.width * scale, result.height * scale);
NSLog(@"Height ........%f",result.height);
if(result.height == 480 || result.height == 960)
// iPhone 3.5 inches Screen
scaleY=1.0;
else if(result.height == 1136)
// iPhone 4 inches Screen
scaleY=1.18333f;
然后将 scaleY 值乘以视图的“y”位置。
UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10*scaleY, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
UIImageView *imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320*scaleY, 320, 140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
您可以在整个代码中使用此“scaleY”值(如上所示)将其与相应视图的 y 位置相乘。由于 iPhone 系列设备的高度不同,所以我们只能更改它们的“y”位置。
希望这会有所帮助。
【讨论】:
虽然我也使用这种方法,但它会导致视图和图像在垂直方向上有点放大。图标不会在 4 英寸屏幕中保持完美的正方形。【参考方案3】:试试这样的 autoresizingmask。
UIImageView *imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[imgLogo setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin)];
[self.view addSubview:imgLogo];
【讨论】:
【参考方案4】:这是对您的问题的快速修复,但我建议使用自动布局。
if ([[UIScreen mainScreen] bounds].size.height == 568)
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 420,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
else
imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 10, 162, 57)];
imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];
[self.view addSubview:imgLogo];
imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 320, 320,140 )];
imgBuilding.image=[UIImage imageNamed:@"image-02.png"];
[self.view addSubview:imgBuilding];
希望对你有所帮助。
【讨论】:
以上是关于iphone 3.5寸屏和4寸屏怎么写代码的主要内容,如果未能解决你的问题,请参考以下文章
iTOP-4412开发板驱动lcd显卡以及linux开机log的修改方法