2015年07月06日第五天笔记

2015年07月06日11:37:04

新知识
1.告诉scrollView控件的滚动的范围 图片不动的的

self.scrollView.contentSize = [UIImage imageNamed@“yidong”].size;

2.在scrollView四周增加额外的滚动区域

self.scrollView.contentInset = UIEdgeInsetsMake(上,左,下,右);

3.滚到的位置(scrollView控件相对于内容的左上角)(边距)

self.scrollView.contentOffset = CGPointMake(600,300);

4.是否显示水平滚动条

self.scrollView.showHorizontalScrollIndicator = NO;

5.是否显示垂直滚动条

self.scrollView.showVerticalScrollIndicator = NO;

6.是否展示弹簧效果

self.scrollView.bounces = NO;

7.取出当前滚到的位置

CGPoint point = self.scrollView.contentOffset;

8.设置滚到的位置

self.scrollView.contentOffset = CGPointMake(0.-self.headView.frame.size.height);

9.设置滚动的上下边距(填充)

self.scrollView.contentInset = UIEdgeInsetsMake(self.headView.frame.size.height,0,self.footView.frame.size.height,0);

10.设置scrollView的代理为当前控制器
self.scrollView.delegate = self;

11.设置缩放比例:self.scrollView.minimumZoomScale 0.2;self.scrollView.maximumZoomScale = 2;
12.代理协议方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 是否有缓冲
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.imageView//要缩放的View
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

13.如果UIScrollView无法滚动,可能是以下原因:
没有设置contentSize
scrollEnabled = NO
没有接收到触摸事件:userInteractionEnabled = NO
没有取消autolayout功能(要想scrollView滚动,必须取消autolayout) (Xcode5.0)
14.@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
设置UIScrollView是否能滚动
15.原理
当UIScrollView发生一系列的滚动操作时, 会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况

也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,然后通过代理得知UIScrollView的滚动过程

16.跟缩放相关的其他代理方法
缩放完毕的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view

正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
17.分页
只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示

一般会配合UIPageControl增强分页效果,UIPageControl常用属性如下
一共有多少页
@property(nonatomic) NSInteger numberOfPages;

当前显示的页码
@property(nonatomic) NSInteger currentPage;

只有一页时,是否需要隐藏页码指示器
@property(nonatomic) BOOL hidesForSinglePage;

其他页码指示器的颜色
@property(nonatomic,retain) UIColor *pageIndicatorTintColor;

当前页码指示器的颜色
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;

18.NSTimer
NSTimer叫做“定时器”,它的作用如下
在指定的时间执行指定的任务
每隔一段时间执行指定的任务

调用下面的方法就会开启一个定时任务

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti  //这个方法不能和其他滚动控件同时使用                         
                                target:(id)aTarget 
                                selector:(SEL)aSelector 
                                userInfo:(id)userInfo 
                                repeats:(BOOL)yesOrNo;

每隔ti秒,调用一次aTarget的aSelector方法,yesOrNo决定了是否重复执行这个任务

通过invalidate方法可以停止定时器的工作,一旦定时器被停止了,就不能再次执行任务。只能再创建一个新的定时器才能执行新的任务
- (void)invalidate;
===解决两个滑动控件同时作用时互不影响

NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

要添加到主运行循环

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

19.获取控件边缘单独坐标

CGFloat contentH = CGRectGetMaxY(self.iWantView.frame) + 10;

图片轮播器思路归纳
UI设计
滚动控件,分页控件
要用滚动先做一些准备
1)设置滚动的区域
2)设置需要分页
3)设置不需要滚动条
4)设置代理
5)监听开始滚动的动作:终止计时
6)监听抬起手指的动作:启动计时
7)监听滚动后的动作:更新当前页

方法实现
终止计时方法 [self.timer invalidate];
启动计时方法
1)创建一个计时器(强引用) 同时指定时间到后要执行的换页方法
2)加入主运行循环3)让控制器弱引用 这样组合即使计时器调用后不会被释放,还能用
注意:创建一个计时器 直接让控制器弱引用 当计时器调用后会被释放,不能再用
更新当前页的方法
1)细节当滑动图片的一半时就更新
2)算法:用滑动的控件的宽度除以图片的大小:取整后四舍五入 round(a/b)

换页方法
1)获取当前页判断是否是最后一张,是则返回第一页;否则下一页
2)计算下次滑动的位置:当前页码*滚动控件的宽度
3)动画设置滚动控件到指定位置

[self.scrollView setContentOffset:CGPointMake(moveX, 0) animated:YES];

动态添加字控件
1)动态合成图片名称生成UIImageView控件
2)计算图片控件的frame:
x=滚动控件的宽度*(i-1);
y=0;
w=滚动控件的宽度
h=滚动控件的高度
3)添加子控件到父控件

喜马拉雅电台思路归纳
UI设计
1.滚动控件
2.最底层的控件
3.头部控件
4.尾部控件
滚动方法
1.设置滚动范围是(0,50):就是左右不能滚,上下滚动50
2.设置上下边距
3.设置初始的滚动位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值