iOS——UIScrollView

本文详细介绍了UIScrollView的基本概念、核心属性及常用方法,并提供了UIScrollViewDelegate的相关回调函数说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、UIScrollView简介

1. UIScrollView 对象适用于那些 尺寸大于屏幕的视图,当某个视图是 UIScrollView 对象的子视图时,该 UIScrollView 对象会画出该视图的某块矩形区域,当用户拖动视图时,UIScrollView 对象会改变该矩形所显示的子视图的区域

二、UIScrollView 属性

1. 设置画布大小,即能显示某个子视图的大小,通常为子视图的大小;默认为 CGSizeZero

@property(nonatomicCGSize contentSize;


2. 设置画布的偏移位置(画布的左上角与该 scrollView 对象的 frame 点的偏移,重合就是 0);默认是 CGSizeZero

@property(nonatomicCGPoint contentOffset; 


3. 内容视图在 UIScrollView 对象中的位置;默认为 UIEdgeInsetsZero

@property(nonatomicUIEdgeInsets contentInset;

typedef struct UIEdgeInsets {
    CGFloat top, left, bottom, right;  // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;

4. 代理对象

@property(nullable,nonatomic,weak)id<UIScrollViewDelegate> delegate;


5. 设置是否只能在一个方向上滚动;默认为 NO

@property(nonatomic,getter=isDirectionalLockEnabled)BOOL directionalLockEnabled;


6. 设置是否有反弹效果;默认为 YES

@property(nonatomicBOOL bounces; 


7. 设置垂直方向是否有反弹效果,必须在 bounces 为 YES 情况下才有效;默认为 NO

@property(nonatomicBOOL alwaysBounceVertical;


8. 设置水平方向是否有反弹效果,必须在 bounces 为 YES 情况下才有效;默认为 NO

@property(nonatomicBOOL alwaysBounceHorizontal;


9. 设置是否是整页翻动;默认为 NO

@property(nonatomic,getter=isPagingEnabled)BOOL pagingEnabled


10. 设置是否允许滑动;默认为 YES

@property(nonatomic,getter=isScrollEnabled)BOOL scrollEnabled;


11. 设置是否显示水平滚动条

@property(nonatomicBOOL showsHorizontalScrollIndicator;


12. 设置是否显示垂直滚动条

@property(nonatomicBOOL showsVerticalScrollIndicator;


13. 设置滚动条在滚动视图中的位置

@property(nonatomicUIEdgeInsets scrollIndicatorInsets;


14. 设置滑动条的样式;默认是 UIScrollViewIndicatorStyleDefault

@property(nonatomicUIScrollViewIndicatorStyle indicatorStyle; 

typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {
    UIScrollViewIndicatorStyleDefault,     // 黑色,边框为白色
    UIScrollViewIndicatorStyleBlack,       // 全黑色 
    UIScrollViewIndicatorStyleWhite        // 全白色
};


15. 滑动速率

@property(nonatomicCGFloat decelerationRate


16. 设置 contentOffset 并设置动画

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;


17. 设置 contentOffset 并设置动画

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated; 


18. 用户触摸到 UIScrollView 对象或者开始拖动,返回 YES

@property(nonatomic,readonly,getter=isTracking) BOOL tracking;


19. 正在拖动中返回 YES

@property(nonatomic,readonly,getter=isDragging) BOOL dragging; 


20. 没有拖动,但还在滑动,返回 YES

@property(nonatomic,readonly,getter=isDecelerating)BOOL decelerating;


21. 是否延迟调用 touchesBegan:withEvent:inContentView:;默认是 YES,

@property(nonatomic)BOOL delaysContentTouches;


22. 默认是 YES,如果是 NO,移动手指,将不能拖动

@property(nonatomic)BOOL canCancelContentTouches;


三、UIScrollViewDelegate

1. 滚动时触发

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;


2. 即将开始拖拽时调用

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;


3. 即将停止拖拽

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset


4. 已经停止拖拽

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;


5. 即将开始减速

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;


6. 已经停止减速,静止的一瞬间

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;


7. 停止滚动

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值