gpt4 book ai didi

ios - Autolayout UIImageView 具有不遵循约束的编程调整大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:17 24 4
gpt4 key购买 nike

抱歉打扰了,但我正在尝试延迟加载多个 imageView,然后根据 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;
}

就约束而言。我正在尝试将带有阴影的 Label 和 UIImageView 附加到主 ImageView 的底部。以下是我应用于 ImageView 底部阴影的约束。底部阴影约束是:

Height Equals:  83
Align Bottom to: Background Image View
LeadingSpace to: Table View Cell

虽然我没有得到我想要的。有任何想法吗?我觉得我正在与自动布局作斗争。

最佳答案

如您所愿!以下是一些使用自动布局的指南,应该会有很大帮助。

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

如果这不起作用,那么您可能必须以编程方式更新约束。现在,我提到的黄金法则是更新约束。抵制更新底层 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 .虽然我已经买了它,但我还没有机会阅读它。不过看起来确实不错。

关于ios - Autolayout UIImageView 具有不遵循约束的编程调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17299223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com