通过编程调整UIImageView的大小

4

我已经尝试了几种不同的解决方案,但都没有成功。

我有一个UIImageView(在Storyboard上创建),上面有多个手势识别器。我一直在尝试根据屏幕大小调整此UIImageView的大小,以充分利用4英寸的显示屏。

似乎由于Imageview是使用storyboard构建的,因此我无法通过编程方式更改它???

我的当前代码如下:

//determine screen size, set scoring button width based on device size.
CGFloat lCurrentHeight = self.view.bounds.size.height;
if (lCurrentHeight == 568.0) {
    CGRect _redHeadImageFrame = _redHeadImage.frame;
    _redHeadImageFrame.size.width = 220;
    [_redHeadImage setFrame:_redHeadImageFrame];
}

有任何想法吗?谢谢。
3个回答

3
如果您正在使用自动布局,您需要更改图像的withConstraint,因为在这种情况下手动更改框架将无法工作。
编辑:
您可以像其他控件一样为宽度约束创建IBOutlet-只需在IB中选择约束并使用右键将其移动到头文件中。然后在代码中更改约束即可。
[self.imageWidthConstraint setConstant:100.0];

我正在使用自动布局。在IB中,这个图像宽度有两个约束条件,即对齐尾部边缘(这是我想要随着新框架改变的内容)。当设置新框架时,我该如何使用withConstraints?谢谢! - SteveM

0

是的,你需要像这样使用。

CGFloat lCurrentHeight = [[UIScreen mainScreen] bounds].size.height; //it will give 568

CGFloat lCurrentHeight = self.view.bounds.size.height;//it will give 548,in your case that condition failed.

0

通过代码或故事板创建的UIViews调整大小没有区别。它们完全相同:设置视图的框架,就像您正在做的那样。

可能发生的情况:

  1. 您的if条件从未为真。您是否使用断点检查过其中的代码是否被调用?也许在浮点直接比较中存在一些错误。请参见this。 此外,请参见this以更好地了解如何检查它是否为4英寸显示器。

  2. 如果实际调用了setFrame:代码,请检查您的视图中是否使用了自动布局。也许UIImageView中有一个约束条件。在这种情况下,您应该使用此约束条件,以正确调整视图的大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接