很抱歉给您带来麻烦,但我正在尝试延迟加载几个imageViews,然后根据UITableView中的内容按比例调整它的大小。我也在尝试(也许是不明智的?)基本上第一次使用Autolayout。我不明白为什么约束在这种情况下不起作用。下面是我在加载适当的图像后用来调整UIImageView大小的代码。
// Scale the image view and return it.
- (UIImageView *) scaleImageViewForScreenWidth:(UIImageView *)imageView {
UIImage *imgFromView = [imageView image];
CGRect newFrame = CGRectMake(0, 0, imgFromView.size.width, imgFromView.size.height);
float imgFactor = newFrame.size.height / newFrame.size.width;
newFrame.size.width = [[UIScreen mainScreen] bounds].size.width;
newFrame.size.height = newFrame.size.width * imgFactor;
[imageView setFrame:newFrame];
return imageView;
}就约束而言。我正在尝试在主图像视图的底部附加一个带有阴影的标签和UIImageView。下面是我在imageview中应用于底部阴影的约束。底部阴影约束为:
Height Equals: 83
Align Bottom to: Background Image View
LeadingSpace to: Table View Cell但是我没有得到我想要的。有什么想法吗?我觉得我是在对抗自动布局。
发布于 2013-06-25 22:35:41
如您所愿!这里有一些使用Autolayout的指南,应该会有很大帮助。
首先,理想的方法是在Interface Builder中进行设置,这样就不需要进一步的编程了。因此,如果--例如--你的视图的边界发生了变化,那么你的视图会根据需要自动调整。
如果这样做不起作用,那么您可能必须以编程方式更新约束。现在,正如我所提到的,金科玉律就是更新约束。抵制住更新底层UIView框架的诱惑!
因此,您将执行以下操作:
_myWidthConstraint.constant = 300.f;下一件要注意的事情是,您应该在特定的位置执行此操作,即在UIView子类方法updateConstraints中执行此操作
- (void)updateConstraints
{
[super updateConstraints];
_myWidthConstraint.constant = 300.f;
}你是如何触发的?通过调用:
[self setNeedsUpdateConstraints];希望这能有所帮助!有关更多信息,请查看Ole Begemann的优秀文章10 Things You Need To Know About Cocoa Autolayout。
别忘了WWDC的视频。这些是必不可少的!
另外,现在有一本书叫iOS Auto Layout Demystified 。虽然我已经买了,但我还没有机会去读它。不过它看起来确实很不错。
发布于 2015-06-28 22:12:33
我也面临着同样的问题。imageview中的图像对于imageview来说太大,并且contentMode被设置为AspectFill。
我通过取消勾选的自动调整子视图来解决这个问题。

https://stackoverflow.com/questions/17299223
复制相似问题