在 UIScrollView 中调整内容 UIView 的大小,有没有一种好方法可以做到这一点而无需进行任何计算?

Posted

技术标签:

【中文标题】在 UIScrollView 中调整内容 UIView 的大小,有没有一种好方法可以做到这一点而无需进行任何计算?【英文标题】:Resizing the content UIView in a UIScrollView, is there a good way to do this without having to do any calculations? 【发布时间】:2015-02-09 19:05:25 【问题描述】:

我有一个 UIScrollView,框架大小是屏幕的大小。滚动视图内部是我的内容 UIView。此视图中有许多按钮。这些是动态的,并且数量会随着时间的推移而增长,所以我需要增加内容 UIView 的大小。有没有一种好方法可以让 UIView 调整大小以适应内部的所有子视图(即 UIButtons)?

我试过这个方法:

[self.content sizeToFit];
self.scrollView.contentSize=self.content.frame.size;

但似乎什么也没做。

【问题讨论】:

【参考方案1】:

UIViewsizeThatFits: 的默认实现不会影响使用sizeToFit 时的任何更改。相反,您可以继承 UIView 并使用这种严厉的方法:

@interface MyView : UIView
@end
@implementation MyView
- (CGSize)sizeThatFits:(CGSize)size 
  CGSize contentSize = CGSizeZero;
  for (UIView *subview in [self subviews]) 
    contentSize.width = MAX(contentSize.width, CGRectGetMaxX(subview.frame));
    contentSize.height = MAX(contentSize.height, CGRectGetMaxY(subview.frame));
  
  size.width = MIN(size.width, contentSize.width);
  size.height = MIN(size.height, contentSize.height);
  return size;

@end

【讨论】:

以上是关于在 UIScrollView 中调整内容 UIView 的大小,有没有一种好方法可以做到这一点而无需进行任何计算?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView - 无法查看所有 UIView

调整 UIView 的大小以适应 uiScrollView 中的所有内容

UIScrollView 自动调整内容?

以编程方式添加内容后调整 uiscrollview 的大小

在 UIScrollView 中调整内容 UIView 的大小,有没有一种好方法可以做到这一点而无需进行任何计算?

调整 UIScrollView 的大小以适应其内容……不起作用