UIScrollView一些小细节

2017-05-10  本文已影响14人  NateLam

scrollView.contentSize = imageView.frame.size 或者等于imageView.image.size

当scrollView没有设置contentSize, 但又需要下拉刷新, 需要将alwaysBounceVertical 设为YES

设置UIEdgeInset其实就是增加滚动范围, 音乐播放器歌词初始一般是从中间开始显示, 设置的是contentOffset的y值为负数, 为什么是负的, 就是scrollView的原点位置y值, 减去要显示的位置的y值, 小-大, 所以是负数.
但是当用户碰一下歌词, 歌词就会立马回弹到顶部, 为了避免这种情况, 应该设置UIEdgeInsetMake的第一个参数, 也就是距上为刚才负数的绝对值, 这样就能慢慢随着用户向上滑动, 歌词慢慢往上滚动

屏幕快照 2017-05-10 上午11.43.01.png

关于分页效果, 是以scrollView的尺寸作为每一页的区分的

关于自动轮播的时候定时器暂停工作

加上这句

[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];

不加之前添加定时器的时候

self.timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(handleUpdate:) userInfo:nil repeats:YES];

默认处于NSRunLoopCommonModes模式, 而修改后的NSRunLoopCommonModes是一个共用模式, 让主线程分配一点资源给定时器, 而不是同一时间只能做一件事, 不是tableview滚动, 就是定时器滚动, 这样显示效果并不好

顺便提一句, UITableViewController自带的view就等同于自带的tableView属性, 通过打印%s, 查看两者的指针可得出结论
如果不使用重用池, 那么离开屏幕的cell就会被销毁, 自动调用dealloc
建议在viewDidLoad上面, 也就是vc找块空地, 声明cell标识符, 如:

static NSString *ID = @"balabala";

方便后续注册cell以及根据标识符取出cell能用到

上一篇下一篇

猜你喜欢

热点阅读