以编程方式更改UIImageView框架大小

gho*_*der 0 frame uiimageview ios

我有一个UImageView初始尺寸设置xib为:

Y:0,身高:406.

viewDidLoad,根据我使用此代码的条件:

self.mainAdImg.frame = CGRectMake(self.mainAdImg.frame.origin.x, self.mainAdImg.frame.origin.y + OFFSET, self.mainAdImg.frame.size.width, self.mainAdImg.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

哪里 mainAdImg is the UIImageView, and OFFSET is 20.0f

所以,我希望,图像会下降20.0.

相反,新值变为:

Y : 20 (correct), height: 426 (not expected)
Run Code Online (Sandbox Code Playgroud)

为什么高度变化?

编辑:

我没有使用autolayout.

我记录原点,高度像这样:

NSLog(@" Y : %f, height : %f",self.mainAdImg.frame.origin.y,self.mainAdImg.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

Lei*_*ien 5

你可以做到这一点 viewDidLayoutSubviews

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    // Do your resizing
}
Run Code Online (Sandbox Code Playgroud)

viewDidLoad视图中只是加载,这太早依赖于帧值.视图没有超级视图,自动调整掩码和自动布局规则可以更改帧值.

如果你仍然想要这样做,viewDidLoad你需要使用固定的帧值(例如CGRectMake(10,10,600,400)).