gpt4 book ai didi

iphone - XCODE:从 iPhone 5 设备的 NIB 调整 UIImageView 大小

转载 作者:可可西里 更新时间:2023-11-01 17:09:26 29 4
gpt4 key购买 nike

我正在尝试为 iPhone5 用户调整背景静态 UIImageView(来自 Nib 文件)的大小。不幸的是,以下代码似乎对背景 View 的大小没有任何影响。

有人知道为什么吗?提前感谢您提供的任何帮助。

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

最佳答案

一些想法:

  1. 正如 demosten 和 shabzco 所建议的,我不会使用设备名称/描述来确定坐标(如果不出意外,iPhone 6 等会怎么样);

  2. 如果您要以编程方式设置 frame,我建议根据 View Controller 的 View 的 边界设置 background.frame 属性 而不是硬编码 ImageView 的大小。这样,背景就会调整到 View Controller View 的适当大小,不仅与设备无关,而且与该 View Controller 是否在以后嵌入为另一个容器 Controller 的 subview Controller 等无关。 (例如,如果将 View 放在导航 Controller 和选项卡栏 Controller 、您自己的自定义容器 Controller 等中会怎样)。此外,不要对状态栏或其他图形元素的大小做出假设。让 iOS 简单地为您解决所有这些问题:

    background.frame = self.view.bounds;
  3. 或者更好的是,如果您已将背景 ImageView 添加到 NIB 本身,请设置自动调整大小掩码并且根本不要以编程方式更改 frame。如果您关闭了自动布局,只需像这样设置 ImageView 的自动调整属性:

    auto sizing

最重要的是,如果可以的话,请避免在代码中引用显式设备名称并避免硬编码坐标。在你的代码中硬编码尺寸只会让你的应用程序更加脆弱,容易受到新设备、新版本 iOS、将 View Controller 嵌入其他容器 Controller 等问题的影响,并限制代码的重用机会。

关于iphone - XCODE:从 iPhone 5 设备的 NIB 调整 UIImageView 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116088/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com