我怎样才能为iphone 3.5英寸屏幕和4英寸屏幕编写代码

时间:2013-11-08 06:26:11

标签: ios iphone objective-c

我正在开发一款应用。在应用程序中,我编写了3.5英寸屏幕的代码。我拿了一个视图控制器;在这个视图控制器中,我想显示两个图像,一个用于顶部(Imagelogo),另一个用于底部(图像构建)。在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];

4 个答案:

答案 0 :(得分:1)

您可以在界面构建器中使用autoResize功能,也可以通过代码使用它。

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

您可以通过代码

根据屏幕尺寸放置图像
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
       //iphone 5 image 
}else
{

}

答案 1 :(得分:1)

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

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
   float scaleY;
}
@end

在“Viewcontroller.m”类中

;将您的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”位置。

希望这有帮助。

答案 2 :(得分:0)

只需尝试使用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];

答案 3 :(得分:0)

这是您的问题的快速解决方案,但我建议使用自动布局。

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

希望这会帮助你。