首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS UIScrollView 垂直滾動佈局:layoutScrollImages 修改 Y 軸佈局

     編輯:程式設計綜合問答

原水平滾動代碼

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 + UIScrollView

UIStackView *stack = [[UIStackView alloc] initWithArrangedSubviews:imageViews];
stack.axis = UILayoutConstraintAxisVertical;
stack.distribution = UIStackViewDistributionEqualSpacing;
[scrollView addSubview:stack];
// 自動約束 stack 邊距貼合 scrollView contentLayoutGuide

自動佈局、動態增刪項目更簡便。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved