找到了解決辦法在這裏ScrollView ContentSize,你就能找到子視圖的大小和找到的總含量的大小,也選擇說子視圖是否水平或垂直排列。
這裏是從上面的鏈接代碼:
@interface UIScrollView(auto_size)
- (void) adjustHeightForCurrentSubviews: (int) verticalPadding;
- (void) adjustWidthForCurrentSubviews: (int) horizontalPadding;
- (void) adjustWidth: (bool) changeWidth andHeight: (bool) changeHeight withHorizontalPadding: (int) horizontalPadding andVerticalPadding: (int) verticalPadding;
@end
@implementation UIScrollView(auto_size)
- (void) adjustWidth: (bool) changeWidth andHeight: (bool) changeHeight withHorizontalPadding: (int) horizontalPadding andVerticalPadding: (int) verticalPadding {
float contentWidth = horizontalPadding;
float contentHeight = verticalPadding;
for (UIView* subview in self.subviews) {
[subview sizeToFit];
contentWidth += subview.frame.size.width;
contentHeight += subview.frame.size.height;
}
contentWidth = changeWidth ? contentWidth : self.superview.frame.size.width;
contentHeight = changeHeight ? contentHeight : self.superview.frame.size.height;
NSLog(@"Adjusting ScrollView size to %fx%f, verticalPadding=%d, horizontalPadding=%d", contentWidth, contentHeight, verticalPadding, horizontalPadding);
self.contentSize = CGSizeMake(contentWidth, contentHeight);
}
- (void) adjustHeightForCurrentSubviews: (int) verticalPadding {
[self adjustWidth:NO andHeight:YES withHorizontalPadding:0 andVerticalPadding:verticalPadding];
}
- (void) adjustWidthForCurrentSubviews: (int) horizontalPadding {
[self adjustWidth:YES andHeight:NO withHorizontalPadding:horizontalPadding andVerticalPadding:0];
}
@end
同時一定要看看博客頁面上的評論作爲提供替代解決方案。
-anoop
從此開始賞金。目前,我的最佳答案是遍歷子視圖並查看其框架。我想知道是否有更好的方法。 SizeThatFits:似乎沒有幫助。 – 2010-11-22 20:47:04
嘗試覆蓋sizeThatFits:執行所需的計算。 – titaniumdecoy 2010-11-29 18:51:22
[夫特分機(http://stackoverflow.com/a/36504526/1634890) – 2016-04-08 16:19:26