iOS tableview

【重新整理】关于Objective-C中UIScrollView

2018-09-15  本文已影响87人  Alan张洋

前言:由于之前很早写的关于【iOS 关于UIScrollView的几点总结】,是从自己的markdown笔记直接拷贝过来后也没有整理,所以在阅读上显得有点乱, 今天花时间重新整理排版了下,方便阅读。还请见谅这么久才重新整理。

1、什么是 UIScrollView ?

2、UIScrollView 的常见属性
@property (nonatomic) CGPoint contentOffset;
image
@property (nonatomic) CGSize contentSize;
@property (nonatomic) UIEdgeInsets contentInset;
3、UIScrollView 各尺寸
image
4、UIScrollView 的其他属性
@property (nonatomic) BOOL bounces;

// 取消回弹效果
self.scrollView.bounces = NO;
@property (nonatomic, getter = isScrollEnabled) BOOL scrollEnabled;
@property (nonatomic) BOOL showsHorizontalScrollIndicator;
@property (nonatomic) BOOL showsVerticalScrollIndicator;

5、 UIScrollView 的基本使用
6、ScrollView 不能滚动的几种情况
image
7、如何去掉滚动条
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
image
// default is UIScrollViewIndicatorStyleDefault
@property (nonatomic) UIScrollViewIndicatorStyle  indicatorStyle;                
// 回弹效果
// default YES. if YES, bounces past edge of content and back again
@property (nonatomic) BOOL bounces;                        
image

@property(nonatomic)        UIEdgeInsets                contentInset;                  // default UIEdgeInsetsZero. add additional scroll area around content

 // animate at constant velocity to new offset
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; 

8、UIScrollView代理
  1. 如何监听一个控件的变化/状态
  1. 代理作用:
  1. 代理协议的规律:
  1. 代理协议中的方法名的规律:
  1. 代理协议中的方法参数的规律:
  1. 如何监听 UIScrollView 的变化
  1. 只要成为了 UIScrollView 的代理,遵守代理协议,实现协议中的方法,当UIScrollView放生一些变化的时候,系统就会自动调用这些代理方法
// 只要UIScrollView滚动就会调用
// 系统会自动调用这些方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView; // any offset changes

// 只要用户准备开始拖拽就会调用
// called on start of dragging (may require some time and or distance to move)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

// 用户停止拖拽(已经松手)
// 但是并不意味着UIScrollView已经停止滚动了,每次调用此方法时,系统都会传入一个当前是否有惯性的参数(decelerate)
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

// UIScrollView停止减速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      // called when scroll view grinds to a halt
  1. 注意:
// 在开发中如果需要监听scrollView滚动是否停止可以这样写
- (void)scrollViewDidEndDragging:(nonnull UISrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (decelerate == NO) {
  [self scrollViewDidEndDecelerating:scrolView];
} else {

}
}

- (void)scrollViewDidEndDecelerating:(nonnull UIScrollView *)scrollView
{
  // 在这里面写scrollView停止时需要做的事情
  NSLog(@"UIScrollView停止滚动了");
}
  1. 为什么代理要用 weak
image
9、UIScrollView 缩放
  1. 要想缩放,除了告诉 UIScrollView 要缩放哪一个控件以外,还要告诉UIScrollView 最小能缩多小,最大能放多大
self.sc.maximumZoomScale = 2.0;
self.sc.minimumZoomScale = 0.5;
  1. 缩放图片分为两步
  1. 想要缩放,必须明确告诉 UIScrollView 要缩放哪一个控件,因为 UIScrollView中可能有很多子控件
// 代理方法
// 大部分代理方法是由控件名开头,小部分不是
// 在此方法中告诉UIScrollView要缩放哪一个控件
- (UIView *)viewForZoomingInScrollView:(nonnull UISCrollView *)scrollView {
  return 需要缩放的图片
}

// 缩放的过程中调用
- (void)scrlooViewDidZoom:(nonnull UIScrollView *)scrolView {
}

// 缩放结束时调用
- (void)scrollViewDidEndZooming:(nonnull UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale {
}

10、UIScrollView
  1. 一个控件如果没有设置 frame ,默认 x/y就是 0
  2. 如果想让 UIScrollView 进行滚动,必须设置可以滚动的范围
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width + 100, self.scrollView.frame.size.height + 100);
  1. 注意:scrollView不能滚动的几种情况

11、UIScrollView 使用步骤
  1. 创建 UIScrollView
  2. 将需要展示内容添加到 UISCrollView
  3. 设置 UISCrollView 的滚动范围(contentSize)
12、UIScrollView 图片轮播器
  1. pagingEnabled 实现分页的本质,是按照 UIScrollView 的宽度或者高度来分页的.
上一篇 下一篇

猜你喜欢

热点阅读