您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > iosUIScrollView
北京传智播客教育—高级软件人才实作培训专家!北京传智播客教育—高级软件人才实作培训专家!UIScrollView传智讲师北京传智播客教育—高级软件人才实作培训专家!掌握•UIScrollView的常见属性•UIScrollView实现滚动、缩放•UIScrollView的常用代理方法•UIScrollView和UIPageControl的分页•NSTimer的使用,计时器控件北京传智播客教育—高级软件人才实作培训专家!作业•将喜马拉雅和图片轮播器结合在一起•制作一个app的新特性界面北京传智播客教育—高级软件人才实作培训专家!UIScrollView快速热身•UIScrollView是干什么的?–UIScrollView也是一种控件–用来实现”滚动”和”缩放”的控件北京传智播客教育—高级软件人才实作培训专家!UIScrollView快速热身•为什么要进行”滚动”或”缩放”?–移动设备屏幕大小有限,当要显示的内容太大时,为了能更方便的查看内容所以需要”滚动”和”缩放”北京传智播客教育—高级软件人才实作培训专家!UIScrollView快速热身•谁进行“滚动”或”缩放”?–“滚动”和”缩放”指的是针对放到UIScrollView控件里面的内容(可以是图片、表格、其他控件等),UIScrollView控件本身不动北京传智播客教育—高级软件人才实作培训专家!UIScrollView快速热身•举例:–1.手机上的“设置”•设置-隐私•设置-Safari–2.大图滚动显示案例–3.图片缩放案例北京传智播客教育—高级软件人才实作培训专家!UIScrollView的基本使用(非常简单)1.拖一个UIScrollView到界面上2.将需要展示的内容添加到UIScrollView中3.设置UIScrollView的contentSize属性contentSize属性的含义是:告诉UIScrollView要展示的内容实际有多大(尺寸),也就是告诉UIScrollView滚动的范围(能滚多远,滚到哪里是尽头)北京传智播客教育—高级软件人才实作培训专家!大图展示案例•大图展示案例步骤:–1.拖一个UIScrollView到屏幕–2.拖一个UIImageView到UIScrollView中–3.设置UIImageView的显示图片,并根据实际设置的图片的大小修改UIImageView的大小–4.在控制器的viewDidLoad方法中,设置UIScrollView的contentSize为图片的实际大小(UIImageView的Image属性的size)北京传智播客教育—高级软件人才实作培训专家!补充:UIScrollView无法滚动可能的原因及解决办法•如果UIScrollView无法滚动,可能是以下原因:没有设置contentSizescrollEnabled=NO没有接收到触摸事件:userInteractionEnabled=NO没有取消autolayout功能(要想scrollView滚动,在xcode5.x下必须取消autolayout)注意:在xcode6.1下不需要取消自动布局也可以滚动。……北京传智播客教育—高级软件人才实作培训专家!注意•UIScrollView的frame.size与contentSize的区别?–frame.size指的是:UIScrollView的可视区域的大小,UIScrollView本身的大小–contentSize指的是:UIScrollView中所包含的内容的大小(要滚动的实际内容的大小)•提问:把frame.size和contentSize设置都一样了,还能滚动吗?如果contentSize比frame.size小还能滚动吗?•总结:在UIScrollView的frame.size这么大的范围内,要显示contentSize这么大的内容。是否需要滚动,取决于contentSize是否比frame.size大。北京传智播客教育—高级软件人才实作培训专家!UIScrollView的常见属性:contentOffset•@property(nonatomic)CGPointcontentOffset;•属性含义:–1当UIScrollView内部的内容滚动时,内容相对于UIScrollView左上角的偏移–2另一种理解方式:内容滚动到了什么位置北京传智播客教育—高级软件人才实作培训专家!案例•通过点击按钮,实现大图自动滚动(修改contentOffset)。北京传智播客教育—高级软件人才实作培训专家!步骤•1.直接实现,直接修改contentOffset没有动画效果•2.通过UIView的动画方法实现•3.通过调用UIScrollView的setContentOffset:animated:来实现带动画效果的滚动。北京传智播客教育—高级软件人才实作培训专家!UIScrollView的常见属性•@property(nonatomic)UIEdgeInsetscontentInset;含义:内容的内边距设置UIScrollView的内容在拖动以后,内容距离UIScrollView的内边距。(联想按钮的内边距属性:Inset)另一种思考方式:想象成把内容加大了,在内容本身的周围加了一圈”外边距”。北京传智播客教育—高级软件人才实作培训专家!案例•演示设置了contentInset属性后的效果。北京传智播客教育—高级软件人才实作培训专家!UIScrollView的常见属性•利用UIScrollView显示下面的大图片frame.size.widthframe.size.heightcontentSize.widthcontentSize.heightcontentInset.rightcontentInset.leftcontentInset.topcontentInset.bottomcontentOffset.xcontentOffset.y北京传智播客教育—高级软件人才实作培训专家!UIScrollView的其他属性•@property(nonatomic)BOOLbounces;•设置UIScrollView是否需要弹簧效果•@property(nonatomic,getter=isScrollEnabled)BOOLscrollEnabled;设置UIScrollView是否能滚动•@property(nonatomic)BOOLshowsHorizontalScrollIndicator;是否显示水平滚动条•@property(nonatomic)BOOLshowsVerticalScrollIndicator;是否显示垂直滚动条北京传智播客教育—高级软件人才实作培训专家!“喜马拉雅”案例•通过”喜马拉雅”案例综合运用刚才学过的属性。–contentSize–contentOffset–contentInset北京传智播客教育—高级软件人才实作培训专家!示例图北京传智播客教育—高级软件人才实作培训专家!参考步骤•1拖拽一个UIScrollView到控制器view,设置该UIScrollView大小与控制器view一致•2设置该UIScrollView的背景色为RGB:212,212,212•3向UIScrollView中增加内容•4设置UIScrollView的contentSize的height为最下面的图片的最大的Y值,width为0(因为横向不滚动)•提示:某个方向上不希望滚动,则把该方向上的contentSize的值设置为0北京传智播客教育—高级软件人才实作培训专家!参考步骤•5向控制器的view中添加一个UIView到最上方,模拟导航栏”•注意:直接拖拽UIView到UIScrollView上,就导致UIView随着UIScrollView进行滚动,这个UIView不属于UIScrollView所以拖拽的时候最好拖拽到Scene(场景)上。在viewDidLoad中设置contentOffset的y值,为-74(设置默认滚动的位置).•6在最底部拖拽一个UIView,模拟”底部菜单”,高度为44•7设置顶部导航栏UIView与底部菜单栏UIView的alpha=0.7(设置透明度)北京传智播客教育—高级软件人才实作培训专家!参考步骤•8设置contentInset属性的top和bottom的值,在滚动后预留一定的内边距•注意:获取某个控件的最大的Y值:CGRectGetMaxY(self.lastButton.frame);•9设置一开始就滚动到某个位置,通过contentOffset属性实现•注意这里要把y值设置为负数•该案例的主要目的:•1了解UIScrollView的基本使用•2深入了解contentSize、contentInset、contentOffset属性的作用和含义北京传智播客教育—高级软件人才实作培训专家!案例:实现滚动的时候输出当前滚动的位置。•思考:–0.获取当前滚动的位置:scrollView.contentOffset–1.要想实现滚动的时候显示当前滚动的位置,那么就一定要监听滚动事件。–2.问题:如何监听滚动事件?答:通过代理来监听。•监听事件的另外一种方式:代理。之前学过的一种方式是:addTarget的方式。北京传智播客教育—高级软件人才实作培训专家!UIScrollView的代理对象是如何工作的?UIScrollViewdelegate(代理对象)用户开始拖拽时:发送特定的消息滚动到某个位置时:发送特定的消息用户停止拖拽时:发送特定的消息北京传智播客教育—高级软件人才实作培训专家!UIScrollView的代理对象是如何工作的?•在OC中,发送消息的意思就是调用方法•因此UIScrollView和delegate的通信可以理解为下图所示UIScrollViewdelegate(代理对象)用户开始拖拽时:调用特定方法滚动到某个位置时:调用特定方法用户停止拖拽时:调用特定方法北京传智播客教育—高级软件人才实作培训专家!UIScrollView的代理对象是如何工作的?UIScrollViewdelegate(代理对象)用户开始拖拽时,调用scrollViewWillBeginDragging:方法具体滚动到某个位置时,调用scrollViewDidScroll:方法用户停止拖拽时,调用scrollViewDidEndDragging:willDecelerate:方法•再精确一点,UIScrollView和delegate的通信应该为下图所示•也就是说,只要设置好了UIScrollView的代理对象,那么当某个事件被触发以后,系统会自动调用代理对象的相应方法。•我们要关心的就是如何设置代理,其他细节无需关心。北京传智播客教育—高级软件人才实作培训专家!成为delegate的条件•UIScrollView将delegate需要实现的方法都定义在了UIScrollViewDelegate协议中,因此要想成为UIScrollView的delegate,必须
本文标题:iosUIScrollView
链接地址:https://www.777doc.com/doc-2878999 .html