ios – AutoLayout动态.xib查看高度

ios – AutoLayout动态.xib查看高度,第1张

概述我无法找到很多与AutoLayout的方式与个别的.xib文件… 我有一个独立的.xib文件,它有3个视图 – 一个标题视图(包含两个标签),一个输入和一个页脚(包含两个按钮).看起来像这样: 标题视图中的标签具有约束,这些约束应影响标题视图的垂直大小,反过来影响整个视图的大小.子标题是带有0行的标签,这意味着它是多行和动态的.其他一切都有一个设置的高度,具有横向限制,以便监视和监视同级的顶级约束 我无法找到很多与autoLayout的方式与个别的.xib文件…

我有一个独立的.xib文件,它有3个视图 – 一个标题视图(包含两个标签),一个输入和一个页脚(包含两个按钮).看起来像这样:

标题视图中的标签具有约束,这些约束应影响标题视图的垂直大小,反过来影响整个视图的大小.子标题是带有0行的标签,这意味着它是多行和动态的.其他一切都有一个设置的高度,具有横向限制,以便监视和监视同级的顶级约束(或者在头部视图的情况下监视).

我遇到的问题是,当我在代码中加载这个.xib文件以显示时,高度总是基于Xcode检查员定义的高度.是否可以根据宽度(影响动态标签高度,因此影响视图的其余部分)使整个视图的高度变为动态?

例如 – 如果我从.xib加载这个视图,并将其宽度设置为300,那么我该如何调整其高度以适应动态标签的新高度?我需要使用intrinsicContentSize方法来定义这个大小吗?

解决方法 经过多次实验和阅读,我找到了答案.在某种构造函数中加载.xib(在我的例子中是一个类级别的方法),你必须确保调用[vIEw setTranslatesautoresizingMaskIntoConstraints:NO];例如,我已经完成了以下 *** 作:
+ (inputVIEw *)inputVIEwWithheader:(Nsstring *)header subheader:(Nsstring *)subheader inputValIDation:(ValIDationBlock)valIDation{    inputVIEw *inputVIEw = [[[NSBundle mainBundle] loadNibnamed:@"inputVIEw" owner:self options:nil] lastObject];    if ([inputVIEw isKindOfClass:[inputVIEw class]]) {        [inputVIEw setTranslatesautoresizingMaskIntoConstraints:NO];        [inputVIEw configureWithheader:header subheader:subheader inputValIDation:valIDation];        [inputVIEw layoutIfNeeded];        [inputVIEw invalIDateIntrinsicContentSize];        return inputVIEw;    }    return nil;}

那么有必要重写layoutSubvIEws和intrinsicContentSize.覆盖的layoutSubvIEws允许我设置我的标签的preferredMaxLayoutWIDth,而覆盖innerContentSize允许我根据约束和子视图来计算大小!这是我的实现:

- (voID)layoutSubvIEws {    [super layoutSubvIEws];    self.subheaderLabel.preferredMaxLayoutWIDth = CGRectGetWIDth(self.bounds);    [super layoutSubvIEws];}- (CGSize)intrinsicContentSize {    CGfloat height = self.headerVIEw.bounds.size.height;    height += self.headerinputSpacer.constant;    height += self.inputFIEld.bounds.size.height;    height += self.inputbuttonSpacer.constant;    height += self.buttonVIEw.bounds.size.height;    CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.wIDth - 20,height);    return size;}

我相信有办法改进这个,或者更好的方法来实现,但现在它至少是正确的大小!对于不应有用户定义的框架的视图非常有用.

总结

以上是内存溢出为你收集整理的ios – AutoLayout动态.xib查看高度全部内容,希望文章能够帮你解决ios – AutoLayout动态.xib查看高度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存