0

我正在开发一个应用程序。在应用程序中,我编写了 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];
4

4 回答 4

1

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

#import <UIKit/UIKit.h>

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

在您的“Viewcontroller.m”类中

在 [super viewDidLoad] 之后的 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”位置。

希望这可以帮助。

于 2013-11-09T17:38:07.383 回答
1

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

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

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

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

}
于 2013-11-08T06:33:55.520 回答
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];     
    }

希望这会帮助你。

于 2013-11-08T06:40:23.260 回答
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];
于 2013-11-08T06:36:15.890 回答