更改框架不会调整UIImageView的大小

Big*_*Lex 3 cocoa-touch uikit ios

在我的iPhone应用程序中,我正在尝试以编程方式调整大小并移动UIImageView,以便将其作为原始设置在iPhone屏幕的左上角,并使其既宽又高,就像屏幕的高度一样.为此,我使用以下代码:

-(void)viewDidLoad
{
     //Getting screen size
     CGRect screenSize = [[UIScreen mainScreen]bounds];

     //Creating the new frame for the UIImageView
     CGRect arect = CGRectMake(0, 0, screenSize.size.height, screenSize.size.height);
     //Setting the image to show

     UIImage *image = [UIImage imageNamed:@"Adele.jpg"];
     self.imageView.image = image;

     //Setting new frame and contentmode
     self.imageView.frame = arect;
     self.imageView.contentMode = UIViewContentModeScaleToFill;
}
Run Code Online (Sandbox Code Playgroud)

self.imageView是我用InterfaceBuilder创建的插座.

问题是当我启动应用程序时,此代码似乎对UIImageView的框架没有任何影响.imageview infact将显示在与IB创建时相同的位置和相同的大小.

你们有没有人知道为什么这段代码不起作用?我错过了什么?

Sco*_*ack 5

我想你可能需要一个不同的内容模式.

UIViewContentModeScaleAspectFit一试.在上下文中:

self.imageView.frame = arect;  
self.imageView.contentMode = UIViewContentModeScaleToFill;
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以initWithFrame:

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
Run Code Online (Sandbox Code Playgroud)

资源

  • 对我而言,AspectFill就是这样做的. (4认同)
  • ``UIViewContentModeScaleAspectFit`虽然`initWithFrame`没有用,但没有工作!无论如何这不是一个奇怪的行为?我的意思是不应该更改已经存在的`UIImageView`实例的框架? (2认同)