我怎么能写的iPhone 3.5英寸的屏幕和4英寸的屏幕的代码

我正在开发一个应用程序。 在应用程序中,我编写了3.5英寸屏幕的代码。 我采取了一个视图控制器; 在这个视图控制器中我想要显示两个图像,一个是顶部(Imagelogo),另一个是底部(Image Building)。 在3.5英寸的屏幕上显示没有问题。 但在4英寸的屏幕上,有一个显示问题。 这两个图像显示不正确。 我不知道如何为3.5和4英寸屏幕编写相同的代码。 我可以使用macros吗? 请给我想法,任何人。 我是编程新手。 提前致谢。

以下是我的代码。

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]; 

您可以在界面生成器中自动resizefunction,或通过代码使用它。

如果您的应用程序支持IOS 5及以上版本,则可以使用Apple的自动布局系统。

您可以通过代码根据屏幕尺寸放置图像

 if ([[UIScreen mainScreen] bounds].size.height == 568) { //iphone 5 image }else { } 

在你的“Viewcontroller.h”中定义float scaleY;

 #import <UIKit/UIKit.h> @interface ViewController : UIViewController { float scaleY; } @end 

在你的“Viewcontroller.m”类中

在你的viewDidLoad方法后面[super viewDidLoad]; 将您的scaleY值放到iPhone系列的不同屏幕尺寸的设备上。

 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”位置。

希望这可以帮助。

试试像这样的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]; 

这是一个快速解决您的问题,但我会build议使用自动布局。

  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]; } 

希望这会帮助你。