我试图避免使用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
方法或将V
和H
设置为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];
请记住,这两种方法都只是一个好主意,可以根据需要缩放图像。