ios – AutoLayout动态.xib查看高度

前端之家收集整理的这篇文章主要介绍了ios – AutoLayout动态.xib查看高度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法找到很多与AutoLayout的方式与个别的.xib文件

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

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

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

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

解决方法

经过多次实验和阅读,我找到了答案.在某种构造函数中加载.xib(在我的例子中是一个类级别的方法),你必须确保调用[view setTranslatesAutoresizingMaskIntoConstraints:NO];例如,我已经完成了以下操作:
  1. + (InputView *)inputViewWithHeader:(NSString *)header subHeader:(NSString *)subHeader inputValidation:(ValidationBlock)validation
  2. {
  3. InputView *inputView = [[[NSBundle mainBundle] loadNibNamed:@"InputView" owner:self options:nil] lastObject];
  4. if ([inputView isKindOfClass:[InputView class]]) {
  5. [inputView setTranslatesAutoresizingMaskIntoConstraints:NO];
  6. [inputView configureWithHeader:header subHeader:subHeader inputValidation:validation];
  7. [inputView layoutIfNeeded];
  8. [inputView invalidateIntrinsicContentSize];
  9. return inputView;
  10. }
  11. return nil;
  12. }

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

  1. - (void)layoutSubviews {
  2. [super layoutSubviews];
  3. self.subHeaderLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.bounds);
  4. [super layoutSubviews];
  5. }
  6.  
  7. - (CGSize)intrinsicContentSize {
  8. CGFloat height = self.headerView.bounds.size.height;
  9. height += self.headerInputSpacer.constant;
  10. height += self.inputField.bounds.size.height;
  11. height += self.inputButtonSpacer.constant;
  12. height += self.buttonView.bounds.size.height;
  13. CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width - 20,height);
  14. return size;
  15. }

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

猜你在找的iOS相关文章