首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有可编程调整大小的自动布局UIImageView不遵循约束

具有可编程调整大小的自动布局UIImageView不遵循约束
EN

Stack Overflow用户
提问于 2013-06-25 21:54:23
回答 2查看 11.8K关注 0票数 2

很抱歉给您带来麻烦,但我正在尝试延迟加载几个imageViews,然后根据UITableView中的内容按比例调整它的大小。我也在尝试(也许是不明智的?)基本上第一次使用Autolayout。我不明白为什么约束在这种情况下不起作用。下面是我在加载适当的图像后用来调整UIImageView大小的代码。

代码语言:javascript
复制
// 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中应用于底部阴影的约束。底部阴影约束为:

代码语言:javascript
复制
Height Equals:  83
Align Bottom to: Background Image View
LeadingSpace to: Table View Cell

但是我没有得到我想要的。有什么想法吗?我觉得我是在对抗自动布局。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 22:35:41

如您所愿!这里有一些使用Autolayout的指南,应该会有很大帮助。

首先,理想的方法是在Interface Builder中进行设置,这样就不需要进一步的编程了。因此,如果--例如--你的视图的边界发生了变化,那么你的视图会根据需要自动调整。

如果这样做不起作用,那么您可能必须以编程方式更新约束。现在,正如我所提到的,金科玉律就是更新约束。抵制住更新底层UIView框架的诱惑!

因此,您将执行以下操作:

代码语言:javascript
复制
_myWidthConstraint.constant = 300.f;

下一件要注意的事情是,您应该在特定的位置执行此操作,即在UIView子类方法updateConstraints中执行此操作

代码语言:javascript
复制
- (void)updateConstraints
{
    [super updateConstraints];
    _myWidthConstraint.constant = 300.f;
}

你是如何触发的?通过调用:

代码语言:javascript
复制
    [self setNeedsUpdateConstraints];

希望这能有所帮助!有关更多信息,请查看Ole Begemann的优秀文章10 Things You Need To Know About Cocoa Autolayout

别忘了WWDC的视频。这些是必不可少的!

另外,现在有一本书叫iOS Auto Layout Demystified 。虽然我已经买了,但我还没有机会去读它。不过它看起来确实很不错。

票数 9
EN

Stack Overflow用户

发布于 2015-06-28 22:12:33

我也面临着同样的问题。imageview中的图像对于imageview来说太大,并且contentMode被设置为AspectFill

我通过取消勾选的自动调整子视图来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17299223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档