CGFloat curXLoc = 0;
for (UIView *view in subviews) {
if ([view isKindOfClass:[UIImageView class]]) {
CGRect frame = view.frame;
frame.origin = CGPointMake(curXLoc, 0); // X 軸累加
view.frame = frame;
curXLoc += kScrollObjWidth;
}
}
[scrollView setContentSize:CGSizeMake(curXLoc, scrollView.bounds.size.height)];
CGFloat curYLoc = 0;
for (UIView *view in subviews) {
if ([view isKindOfClass:[UIImageView class]]) {
CGRect frame = view.frame;
frame.origin = CGPointMake(0, curYLoc); // Y 軸累加
view.frame = frame;
curYLoc += kScrollObjHeight;
}
}
[scrollView setContentSize:CGSizeMake(scrollView.bounds.size.width, curYLoc)];
frame.origin.x 固定為 0(或左邊距),frame.origin.y 累加高度。contentSize.width 等於 ScrollView 寬度,contentSize.height 為所有子視圖總高度。kScrollObjHeight) 需預先確定或根據圖片比例計算。UIStackView *stack = [[UIStackView alloc] initWithArrangedSubviews:imageViews];
stack.axis = UILayoutConstraintAxisVertical;
stack.distribution = UIStackViewDistributionEqualSpacing;
[scrollView addSubview:stack];
// 自動約束 stack 邊距貼合 scrollView contentLayoutGuide
自動佈局、動態增刪項目更簡便。