如何编写适用于ios6& 6的iphone 3.5英寸屏幕和4英寸屏幕的代码IOS 7

时间:2013-11-30 07:39:39

标签: iphone objective-c ios6

我正在开发一款应用。在应用程序中,我为ios7和ios6编写了一个3.5英寸屏幕和4英寸屏幕的代码。我拿了一个视图控制器;在这个视图控制器中,我想显示两个图像,一个用于顶部,另一个用于底部。在ios7 3.5英寸屏幕和4英寸屏幕上,显示屏没有问题。但是在4英寸屏幕和3.5英寸屏幕的ios6屏幕上,存在显示问题。这两个图像无法正确显示。我不知道如何为4英寸和以上的ios6和ios7编写相同的代码。 3.5英寸屏幕。任何人都请给我一些想法。我是编程新手。提前谢谢。

以下是我的代码。

Viewcontroller.m(适用于ios7和ios6的3.5英寸和4英寸屏幕)。

if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 65, 162, 57)];

    imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];

    [self.view addSubview:imgLogo];

    imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(8, 415, 300, 153 )];

    imgBuilding.image=[UIImage imageNamed:@"image-02.png"];

    imgBuilding.alpha=0.4;

    [self.view addSubview:imgBuilding];
}
else
{
    imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 70, 162, 57)];

    imgLogo.image=[UIImage imageNamed:@"Logo-01.png"];

    [self.view addSubview:imgLogo];

    imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 345, 320,140 )];

    imgBuilding.image=[UIImage imageNamed:@"image-02.png"];

    imgBuilding.alpha=0.4;

    [self.view addSubview:imgBuilding];
}

2 个答案:

答案 0 :(得分:4)

您必须检查操作系统是否是IOS 7或更早版本,具体取决于您是否设置了imageView。

    UIImageView *imgLogo;
    UIImageView *imgBuilding;
    if ([[UIScreen mainScreen] bounds].size.height == 568)
    {
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
        {
            imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 65, 162, 57)];
            imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(8, 415, 300, 153 )];
        }
        else
        {
            imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 45, 162, 57)];
            imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(8, 395, 300, 153 )];

        }
        imgLogo.image=[UIImage imageNamed:@"icon.png"];

        [self.view addSubview:imgLogo];
        imgBuilding.image=[UIImage imageNamed:@"icon.png"];

        imgBuilding.alpha=0.4;

        [self.view addSubview:imgBuilding];
    }
    else
    {
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
        {
            imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 70, 162, 57)];
            imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 345, 320,140 )];
        }
        else
        {
            imgLogo=[[UIImageView alloc]initWithFrame:CGRectMake(75, 50, 162, 57)];
            imgBuilding=[[UIImageView alloc]initWithFrame:CGRectMake(0, 325, 320,140 )];
        }
        imgLogo.image=[UIImage imageNamed:@"icon.png"];

        [self.view addSubview:imgLogo];
        imgBuilding.image=[UIImage imageNamed:@"icon.png"];

        imgBuilding.alpha=0.4;

        [self.view addSubview:imgBuilding];
    }

希望这会对你有所帮助。

答案 1 :(得分:2)

您可以通过autoResizing又名“ Spring and Struts ”或使用最新的“ Autolayout ”功能执行此操作。
无论哪种方式都允许您维护单个xib文件,而subViews的定位和大小保持不变(取决于您设置的方式

可以通过xib / storyboard以及编程方式设置它们。


Springs和Struts 是之前的方法,但它仍然可用:

  • 春天subView
  • 的伸展能力
  • Strut 是展示位置,或者您可以说 拥抱 。 (即它拥抱上限或下限或左或右)

链接:


Autolayout 要求您对约束的概念感到满意 这是一个更多的努力,但嘿,如果苹果说它更好,它肯定是

链接“


注意:您不能同时使用它们。如果要使用弹簧和放大器,则必须在视图上禁用 Autolayout 功能。支柱