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

iOS UIScrollView 聯動 UITextView:scrollViewDidScroll 根據偏移量切換文本

     編輯:程式設計疑難解答

需求

水平 `UIScrollView` 放多張圖片,頂部 `UITextView` 隨頁面切換顯示對應說明。

實現:代理方法 `scrollViewDidScroll`

@interface ViewController () <UIScrollViewDelegate>
@property (nonatomic) int currentPage;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.scrollView.delegate = self;
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 3, 0); // 3頁
    self.currentPage = 0;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat offsetX = scrollView.contentOffset.x;
    CGFloat pageWidth = scrollView.frame.size.width;
    int newPage = (int)round(offsetX / pageWidth);

    if (newPage != self.currentPage && newPage >= 0 && newPage < 3) {
        self.currentPage = newPage;
        switch (newPage) {
            case 0: self.textView.text = @"第一張圖片說明"; break;
            case 1: self.textView.text = @"第二張圖片說明"; break;
            case 2: self.textView.text = @"第三張圖片說明"; break;
        }
    }
}
@end

關鍵點

  • `contentOffset.x` 為水平偏移量,除以頁寬得頁碼。
  • 用 `round` 四捨五入,避免邊界抖動。
  • 保存 `currentPage`,**僅在頁碼真正變化時更新文本**,減少重複賦值、提升性能。
  • 若用 `UIPageViewController`,可在 `viewControllerAfter`/`Before` 回調中同步文本,更符合頁面翻轉語義。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved