scrollView常用属性

本文详细介绍了 UIScrollView 的核心属性,包括内容大小、偏移位置、间距等,并解释了如何通过代理监听其滚动行为。此外还涉及了分页、指示器、缩放及键盘交互等特性。

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

  • contentSize: 内容大小,设置了才可以滚动
  • contentOffset: 内容偏移位置
  • contentInset: 内容间距
  • pagingEnabled: 是否允许分页
  • bounces: 是否允许弹簧效果
  • showsHorizontalScrollIndicator: 是否允许显示水平指示器(滚动条)
  • showsVerticalScrollIndicator: 是否允许显示垂直指示器(滚动条)

  • 滚动内容属性
/// 内容偏移位置
@property(nonatomic)         CGPoint                      contentOffset;                  // default CGPointZero
/// 内容大小,设置了才可以滚动
@property(nonatomic)         CGSize                       contentSize;                    // default CGSizeZero
/// 内容间距
@property(nonatomic)         UIEdgeInsets                 contentInset;
  • 委托属性
@property(nullable,nonatomic,weak) id<UIScrollViewDelegate>        delegate;
要想监听滚动视图的滚动 / 拖拽 / 缩放 / 状态栏交互

需要设置 delegate
实现相关协议方法
  • 弹簧效果属性
/// 允许弹簧效果
@property(nonatomic)         BOOL                         bounces;                        // default YES. if YES, bounces past edge of content and back again
/// 始终允许垂直弹
@property(nonatomic)         BOOL                         alwaysBounceVertical;           // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically
/// 始终允许水平弹
@property(nonatomic)         BOOL                         alwaysBounceHorizontal;
  • 分页属性
/// 允许分页
@property(nonatomic,getter=isPagingEnabled) BOOL          pagingEnabled __TVOS_PROHIBITED;// default NO. if YES, stop on multiples of view bounds
  • 指示器属性
/// 显示水平指示器
@property(nonatomic)         BOOL                         showsHorizontalScrollIndicator; // default YES. show indicator while we are tracking. fades out after tracking
/// 显示垂直指示器
@property(nonatomic)         BOOL                         showsVerticalScrollIndicator;   // default YES. show indicator while we are tracking. fades out after tracking
/// 指示器间距
@property(nonatomic)         UIEdgeInsets                 scrollIndicatorInsets;          // default is UIEdgeInsetsZero. adjust indicators inside of insets
/// 指示器样式
@property(nonatomic)         UIScrollViewIndicatorStyle   indicatorStyle;                 // default is UIScrollViewIndicatorStyleDefault
在 scrollView 中指示器本质上就是 UIImageView

通过查看视图层次结构可以看到
  • 缩放属性
/// 最小缩放比例
@property(nonatomic) CGFloat minimumZoomScale;     // default is 1.0
/// 最大缩放比例
@property(nonatomic) CGFloat maximumZoomScale;     // default is 1.0. must be > minimum zoom scale to enable zooming
要允许缩放

必须设置以上两个属性
同时遵守协议
实现协议方法 -viewForZoomingInScrollView:
  • 状态栏属性
/// 点击状态栏滚动到顶部
@property(nonatomic) BOOL  scrollsToTop __TVOS_PROHIBITED;          // default is YES.
一个视图中,如果有多个 scrollView

只有唯一一个 scrollView 的 scrollsToTop 属性设置为 YES,才支持点击状态栏滚动到顶部
  • 键盘属性
/// 键盘解除模式
@property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode NS_AVAILABLE_IOS(7_0); // default is UIScrollViewKeyboardDismissModeNone
如果是 UITextView,通常需要将 alwaysBounceVertical 属性设置为 YES

typedef NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {
    // 无
    UIScrollViewKeyboardDismissModeNone,
    // 拖拽关闭键盘
    UIScrollViewKeyboardDismissModeOnDrag,      // dismisses the keyboard when a drag begins
    // 必须要拖拽到键盘才可以关闭键盘,很少使用
    UIScrollViewKeyboardDismissModeInteractive, // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
} NS_ENUM_AVAILABLE_IOS(7_0);
  • 常用方法
/// 动画设置偏移位置
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;  // animate at constant velocity to new offset

/// 动画设置滚动区域
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;         // scroll so rect is just visible (nearest edges). nothing if rect completely visible
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值