当前位置 : 主页 > 手机开发 > ios >

XCODE:为iPhone 5设备从NIB调整UIImageView大小

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在尝试为iPhone5用户调整后台静态UI ImageView(来自Nib文件)的大小.不幸的是,以下代码似乎对背景视图的大小没有任何影响. 有谁知道为什么?提前感谢您提供的任何帮助. ViewController.
我正在尝试为iPhone5用户调整后台静态UI ImageView(来自Nib文件)的大小.不幸的是,以下代码似乎对背景视图的大小没有任何影响.

有谁知道为什么?提前感谢您提供的任何帮助.

ViewController.m:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    device = appDelegate.deviceType;
    NSLog(@"The device platform is: %@", device);
    if ([[device substringToIndex:8] caseInsensitiveCompare: @"iPhone 5"] == NSOrderedSame) {
        [background sizeThatFits:CGSizeMake(320, 504)];
    }
    else {
        [background sizeThatFits:CGSizeMake(320, 416)];
    }
...
//Note: 'background' is declared in `ViewController.h` as, `IBOutlet` `UIImageView` *background, and is linked to the image view in ViewController_iPhone.xib
一些想法:

>正如demosten和shabzco建议的那样,我不会使用设备名称/描述来确定坐标(如果没有别的,那么iPhone 6等等);
>如果您要以编程方式设置框架,我建议根据视图控制器的视图边界设置background.frame属性,而不是硬编码图像视图的大小.这样,背景被调整到视图控制器视图的适当大小,不仅与设备无关,而且无论该视图控制器是否在以后被嵌入为另一个容器控制器的子视图控制器等. (例如,如果您将视图放在导航控制器和标签栏控制器,您自己的自定义容器控制器等中,该怎么办).另外,不要假设状态栏或其他图形元素的大小.让iOS简单地为您完成所有这些:

background.frame = self.view.bounds;

>或者更好的是,如果您已将背景图像视图添加到NIB本身,请设置自动调整遮罩,并且不要以编程方式更改框架.如果您关闭了autolayout,只需设置图像视图的自动调整属性,如下所示:

如果可以,可以在底线中避免代码中明确的设备名称引用,并避免使用硬编码坐标.在代码中使用硬编码维度只会使您的应用程序更加脆弱,容易受到新设备,iOS新版本,将视图控制器嵌入其他容器控制器等问题的影响,并限制代码的重用机会.

网友评论