【问题标题】:changing UIImageView frame size programmatically以编程方式更改 UIImageView 帧大小
【发布时间】:2013-11-17 22:28:42
【问题描述】:

我有一个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);

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

所以,我预计图像会下降20.0

相反,新值变为:

Y : 20 (correct), height: 426 (not expected)

为什么高度会变化?

编辑:

我没有使用自动布局。

我记录原点,高度如下:

NSLog(@" Y : %f, height : %f",self.mainAdImg.frame.origin.y,self.mainAdImg.frame.size.height);

【问题讨论】:

  • 您使用的是什么自动调整大小/布局?你是如何记录帧的?
  • self.mainAdImg.frame.size,height 应该是 self.mainAdImg.frame.size.height 吧?
  • 忽略错字,问题是为什么高度会改变?
  • 在改变帧大小之前你得到的高度是多少?在更改帧大小之前,将 NSLog 打印出高度。
  • 自动调整大小?在 iPhone 5 上运行但 XIB 是 iPhone 4?

标签: ios uiimageview frame


【解决方案1】:

您可以在viewDidLayoutSubviews 中这样做

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    // Do your resizing
}

viewDidLoad 中,视图刚刚加载,依赖帧值还为时过早。该视图没有超级视图,并且自动调整掩码和自动布局规则可以更改帧值。

如果您仍想在 viewDidLoad 中执行此操作,则需要使用固定帧值(例如 CGRectMake(10,10,600,400))。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2016-12-22
    • 2013-09-06
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多