`
cwlong
  • 浏览: 10649 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

UIScrollView - 常用方法总结

    博客分类:
  • Ios
 
阅读更多
注 : 文章不断更新,转载文章请加上作者


1 . 什么是UIScrollView ?

当展示的内容较多, 超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容
而UIScrollView是一个能够滚动的视图控件. 与UIView的最大区别就是可滚动

2. 常用属性

@property(nonatomic) CGSize  contentSize;//必须设置的属性, 设置滚动区域

@property(nonatomic,getter=isScrollEnabled) BOOL   scrollEnabled;// 能否滚动

@property(nonatomic) BOOL  bounces;//设置是否需要弹簧效果

@property(nonatomic) BOOL  showsHorizontalScrollIndicator;//设置是否显示水平滚动条

@property(nonatomic) BOOL  showsVerticalScrollIndicator;[//设置是否显示垂直滚动条

@property(nonatomic,getter=isPagingEnabled) BOOL pagingEnabled; //设置是否分页  (分页是根据UIScrollView的宽度进行分页)






//这个属性用来表示UIScrollView滚动的位置
//以屏幕显示左上角为圆心,移动contentOffset 位置 
@property(nonatomic) CGPoint  contentOffset; 


//能够在UIScrollView的四周增加额外的滚动区域
//UIEdgeInsets 其实就是一个枚举
typedef struct UIEdgeInsets {
    CGFloat top, left, bottom, right;  
} UIEdgeInsets;
@property(nonatomic) UIEdgeInsets   contentInset; 




3. 常用方法
//(CGPoint)contentOffset : 设置contentOffset ; animated : 是否需要动画 
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; 







4. 无法滚动的原因

-> 没有设置contentSize属性.(没确定滚动范围)
-> 没有取消autolayout功能 , (要想scrolllview滚动, 必须取消autolayout功能).
-> scrollEnabled = NO //能否滚动属性 选择了否
-> 没有接收到触摸事件(继承自UIView中的 userInteractionEnabled属性,)能否跟用户进行交互
@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;


5. UIScrollView的代理(委托)(delegate)

delegate,是UIScrollView的一个属性, 当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象, 给它的代理调某个方法发送相应消息,让代理得知它的滚动情况
@property(nonatomic,assign) id<UIScrollViewDelegate>  delegate;
实现代理的条件:
1. 必须是个对象,任意类型都可以
2. 必须遵守UIScrollViewDelegate这个协议的方法

通讯:


//开始拖拽时,调用的方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

//具体滚到到某个位置时
- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 

//用户停止拖拽时
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

//用户使用捏合手势时调用
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; 





实现代理三部曲:
5.1. (一般是控制器)遵守协议

//在.m文件中,遵守UIScrollViewDelegate协议
@interface ViewController () <UIScrollViewDelegate>

@end



5.2. 实现方法(具体业务逻辑)

//当滚动开始时,系统自动调用scrollViewWillBeginDragging方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"开始啦~");
}




5.3. 设置UIScrollView的代理(一般控制器为代理)


//将delegate属性设置为当前控制器
self.scrollView.delegate = self;





代理设计模式

1, 让一个对象A监听另一个对象B的状态
2, 一个对象B状态发生了改变,然后通知另一个对象A



  • 大小: 28.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics