我试图避免使用NSLayoutConstraint检测我的iPhone 4或5屏幕尺寸。这是我的代码:

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Flow-02"]];
[self.view addSubview:backgroundImage];
[self.view sendSubviewToBack:backgroundImage];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[backgroundImage]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(backgroundImage)]];

但这不起作用。

我的Flow-02图像的分辨率为640x1136,因此我认为这可以使其适合屏幕,但事实并非如此。有办法吗?

编辑:在下面rmaddy的回答之后,我添加了如下行来设置图像的框架:
backgroundImage.frame = self.view.bounds;

它确实在iPhone 5模拟器上正确设置了我的图像,但是在我的iPhone 4s上,它仍然横向伸展。

Anindya Sengupta建议的autoresizingMask方法或将VH设置为constraintsWithVisualFormat均无效。

最佳答案

另一个选择是这样的:

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Flow-02"]];
backgroundImage.contentMode = UIViewContentModeScaleToFill;
backgroundImage.frame = self.view.bounds;
backgroundImage.autoResizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self.view addSubview:backgroundImage];
[self.view sendSubviewToBack:backgroundImage];

请记住,这两种方法都只是一个好主意,可以根据需要缩放图像。

10-08 15:14