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的修改方法

LCD屏参数及应用举例

正点原子4.3寸屏

围观迅为IMX6开发板QT下LVDS和HDMI如何双屏异显的

3寸屏接口转spi

Delphi开发安卓程序的感受