4.ui基础第五天是一个能够滚动的视图控件可以用来展示_第1页
4.ui基础第五天是一个能够滚动的视图控件可以用来展示_第2页
4.ui基础第五天是一个能够滚动的视图控件可以用来展示_第3页
4.ui基础第五天是一个能够滚动的视图控件可以用来展示_第4页
4.ui基础第五天是一个能够滚动的视图控件可以用来展示_第5页
免费预览已结束,剩余11页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、A01-UIScrollView介绍0:23UIScrollView 是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容3个练习1、滚动大图(缩放大图)2、喜马拉雅3、轮播器分区 第五天(UIScrollView) 的第 1 页A02-UIScrollView的基本使用0:23一、使用步骤1、拖拽一个UIScrollView2、把滚动的内容放到UIScrollView中3、设置UIScrollView的contentSize属性 拖动的范围二、无法滚动检查/以上步骤即可,如果控件依然无法滚动,检查下面两个属性是否被禁用 1、self.scrollView.scro

2、llEnabled;2、self.scrollView.usereractionEnabled;三、滚动大图的练习self.scrollView.contentSize = self.imageView.frame.size;/self.scrollView.contentInset = UIEdgeInsetsMake(10, 30, 40);20,/self.scrollView.contentOffset = CGPoMake(-100, -20);self.scrollView.showsHorizontalScrollIndicator self.scrollView.showsVe

3、rticalScrollIndicator = NO; NO;self.scrollView.boun= NO;-(IBAction)btnClick CGPopo= self.scrollView.contentOffset;po.x += 50;UIView animateWithDuration:1.0 animations: self.scrollView.contentOffset = po;分区 第五天(UIScrollView) 的第 2 页A03-动画的方式滚动大图0:23主要理解:frame contentSize contentOffset contentInsetCGPo

4、po= self.scrollView.contentOffset;po.x += 50;UIView animateWithDuration:1.0 animations: self.scrollView.contentOffset = po;self.scrollView.contentSize = self.imageView.frame.size;/self.scrollView.contentInset = UIEdgeInsetsMake(10, 20, 40);30,/self.scrollView.contentOffset=CGPoMake(-100,-20);分区 第五天(

5、UIScrollView) 的第 3 页A04-UIScrollView的常见属性0:23UIScrollView常用属性/滚动的位置 屏幕左上角的位置相对于/scrollView相对于内容的偏移property(nonatomic) CGPo/滚动范围property(nonatomic) CGSize左上角的位置,左上角的位置为0,0contentOffset;/ default CGPoZerocontentSize;/ default CGSizeZeroself.scrollView.frame /scrollView的大小(可视范围)/上下左右,逆时针顺序,增加边距。默认不显示这个

6、距离,滚动之后才有property(nonatomic) UIEdgeInsetscontentInset;/ default UIEdgeInsetsZero.add additional scroll area around content/是否启用弹簧效果。默认启用property(nonatomic)/ default YES. if YES, bounBOOLpast edge ofboun;content andback again/启用滚动 property(nonatomic,getter=isScrollEnabled)BOOLtemporarilyscrollEnabled

7、;/ defaultYES. turn ony dragging/横向滚动条property(nonatomic)/ default YES. showBOOLindicator whileshowsHorizontalScrollIndicator; fades out after trackingwearetracking./纵向滚动条property(nonatomic)BOOLshowsVerticalScrollIndicator;/defaultYES.showindicatorwhilewearetracking.fadesoutaftertracking分区 第五天(UIScr

8、ollView) 的第 4 页A05-喜马拉雅练习0:231、演示2、画图理解每一块内容3、拖拽,把要滚动的内容放在scrollView中4、设置contentSize属性,滚动范围CGFloat contentH = CGRectGetMaxY(self.lastView.frame) +10;self.scrollView.contentSize = CGSizeMake(0, contentH);5、设置header6、设置footer/设置滚动范围CGFloat contentH = CGRectGetMaxY(self.lastView.frame) + 10; self.scrol

9、lView.contentSize = CGSizeMake(0, contentH);/设置间距self.scrollView.contentInset = UIEdgeInsetsMake(64, 0,/设置起始的偏移44,0);self.scrollView.contentOffset=CGPoMake(0,-64);分区 第五天(UIScrollView) 的第 5 页A06-UIScrollViewDelegate0:23很多时候,想在UIScrollView正在滚动 或 滚动到某个位置 或者停止滚动 时做一些特定的操作要想完成上述功能,前提条件就是能够过程到UIScrollView

10、的整个滚动当UIScrollView发生一系列的滚动操作时, 会自动通知它的(delegate)对象,给它的情况发送相应的消息,让得知它的滚动也就是说,要想UIScrollView的滚动过程,就必须先给UIScrollView设置一个动过程对象,然后通过得知UIScrollView的滚一、设置scrollView的1、先让controller遵守UIScrollViewDelegate协议2、设置scrollView的为controller的名字都以类的名字开始,3、设置的方法(的方法也是以对象的名字开始)#pragma mark - scrollView的方法- (void)scrollVi

11、ewWillBeginDragging:(UIScrollView *)scrollViewNSLog(马上开始滚了);-(void)scrollViewDidScroll:(UIScrollView*)scrollView/scrollView.contentOffset NSLog(别打扰我,正在滚);分区 第五天(UIScrollView) 的第 6 页A07-内容缩放0:23property(nonatomic,assign) id default nil. weak referencedelegate;/当用户在UIScrollView中使用捏合手势时,UIScrollView会给块

12、内容)UIScrollView只能缩放一个控件发送一条消息,询问要缩放自己的哪一个子控件(哪一中缩放的消息viewForZoomingInScrollView实现捏合手势放大缩小的步骤1、/设置self.scrollView.delegate = self;/设置最大和最小的缩放比例self.scrollView.umZoomScale = 2.0;self.scrollView.minimumZoomScale = 0.5;2、调用/*/的方法当用户使用捏合手势的时候调用param scrollViewreturn 返回的就是要缩放的是哪一个控件- (UIView *)viewForZoom

13、ingInScrollView:(UIScrollView *)scrollViewreturn self.imageView;复习1、的作用1、的:让一个对象a另一个对象b的状态改变2、通知的中的:一个对象b状态改变(做了某些事情) 通知另一个对象2、optional 如果此方法 required中的方法没有用它修饰的话,会有警告,调用方法的时候要判理是否提供了分区 第五天(UIScrollView) 的第 7 页A08-轮播0:231、演示2、画图分析3、代码实现CGFloat imgW = self.scrollView.frame.size.width; CGFloat imgH =

14、self.scrollView.frame.size.height; CGFloat imgY = 0;count = 5;/1、添加for (i = 0; i count; i+) NSString *imgName = NSString stringWithFormat:img_%02d,i+1;UIImageView *imageView = UIImageView allocinitWithImage:UIImage imageNamed:imgName;CGFloat imgX = i * imgW;imageView.frame = CGRectMake(imgX, imgY, i

15、mgW, imgH); self.scrollView addSubview:imageView;/2、设置scrollView self.scrollView.contentSize = CGSizeMake(count self.scrollView.showsHorizontalScrollIndicator*=imgW, NO;0);self.scrollViegingEnabled = YES;分区 第五天(UIScrollView) 的第 8 页A09-UIPageControl0:231、使用连线的方式设置UIScrollView的2、pageControl的两个属性number

16、OfPagescurrentPage3、当滚动的位置超过一半的时候设置pageControl的currentPage为下一张/数学计算n = (50 + 50) /100;NSLog(%d,n);/在scrollView的方法中,重新计算current#pragma mark - UIScrollView的方法- (void)scrollViewDidScroll:(UIScrollView *)scrollViewpage = (scrollView.contentOffset.x scrollView.frame.size.width) / scrollView.frame.size.wi

17、dth;+0.5*self.pageControl.currentPage=page;分区 第五天(UIScrollView) 的第 9 页A10-NSTimer0:23启动定时器的两种方法/1/timerWithTime NSTimer *timer =erval需要手工把timer加入到消息循环中NSTimer timerWithTimeerval:2.0:selfselector:selector(nextImage) userInfo:nil repeats:YES; NSRunLoop *loop = NSRunLoop currentRunLoop; loop addTimer:t

18、imer forMode:NSDefaultRunLoopMode;/这个方法仅仅是提前执行timer要执行的方法/timer fire;/2/scheduledTimerWithTimeerval自动把timer加入到消息循环中NSTimer *timer = NSTimer scheduledTimerWithTimeerval:1.0:selfselector:selector(nextImage) userInfo:nil repeats:YES;/让自动-(void)nextImagen = self.pageControl.currentPage;if (n = 5 - 1) n

19、= 0;elsen = self.pageControl.currentPage + 1;/让scollView自己滚动CGFloat offsetX = n * self.scrollView.frame.size.width; self.scrollView setContentOffset:CGPoMake(offsetX, 0)animated:YES;分区 第五天(UIScrollView) 的第 10 页A11-解决拖拽scrollView,timer的小问题0:23- (void)scrollViewWillBeginDragging:(UIScrollView *)scroll

20、View/当开始拖拽的时候停止定时器self.timer invalidate;/停止定时器后,会从消息循环中移除定时器self.timer = nil;- (void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(BOOL)decelerate/停止拖拽的时候开启一个新的定时器self.timer = NSTimer timerWithTimeerval:2.0:selfselector:selector(nextImage) userInfo:nil repeats:YES;NSRunLoop *loo

21、p = NSRunLoop currentRunLoop; loop addTimer:self.timer fomonModes;分区 第五天(UIScrollView) 的第 11 页A12-应用管理的按钮五6:19-(IBAction)downloadClick:(UIButton *)sender /点击按钮sender.enabled= NO;CGFloat CGFloattipW = tipH =150;30;CGFloat CGFloattipX = tipY =(self.superview.frame.size.width - tipW) * 0.5; (self.super

22、view.frame.size.height - tipH) * 0.5;UILabel*tipView = UILabel alloc initWithFrame:CGRectMake(tipX, tipY, tipW, tipH);self.superview addSubview:tipView;tipView.text = NSString stringWithFormat:正在%,self.appI;tipView.backgroundColor = UICol tipView.alpha = 0;rayColor;tipView.font = UIFont syst

23、emFontOfSize:13; tipView.textAlignment = NSTextAlignmentCenter; tipView.layer.masksToBounds = YES; tipView.layer.cornerRadius = 5;UIView animateWithDuration:1.0 animations:tipView.alpha = 0.8; completion:(BOOL finished) UIView animateWithDuration:1.0 delay:2.0 animations:tipView.alpha = 0; completio

24、n:(BOOL finished) tipView removeFromSuperview;options:UIViewAnimationOptionCurveLinear分区 第五天(UIScrollView) 的第 12 页A13-复习block13:58/定义blockvoid (myblock)() = NSLog(111);/这样写也是正确的() 后面的()代表参数列表void (myblock)() = () NSLog(111);/调用block myblock();(myb)(,) = (a,b)returna + b;/block作为方法的参数self testWithBlo

25、ck:NSLog(3333333);-(void)testWithBl:()(,)blockblock(5,6);-(void)testWithBlock:(void ()(void)blockblock();分区 第五天(UIScrollView) 的第 13 页X1-掌握0:23UIScrollView的常见属性UIScrollView的常用方法UIScrollView的缩放UIScrollView和UIPageControl的分页NSTimer的使用分区 第五天(UIScrollView) 的第 14 页X2-扩展阅读NSRunLoop16:25一.NSRunLoop在Cocoa中,每个

26、线程(NSThread)对象中都有一个run loop(NSRunLoop)对象用来循环处理输入事件,处理的事件包括两类,一是来自Input sour的同步事件;的异步事件,一是来自Timer sourrun Loop在处理输入事件时会产生通知,可以通过Core Foundation向线程中添加run-loopobservers来特定事件,以在的事件发生时做附加的处理工作。每个run loop可运行在不同的模式下,一个run loop mode是一个集合,其中包含其的若干输入事件源,定时器,以及在事件发生时需要通知的run loop observers。运行在一种mode下的run loop只

27、会处理其run loop mode中包含的输入源事件,定时器事件,以及通知run loop mode中包含的observers。Cocoa中的预定义模式有:Default模式定义:NSDefaultRunLoopMode (Cocoa) kCFRunLoopDefaultMode (Core Foundation)描述:默认模式中几乎包含了所有输入源(NSConnection除外),一般情况下应使用此模式。 Connection模式定义:NSConnectionReplyMode(Cocoa)描述:处理NSConnection对象相关事件,系统 Modal模式定义:NSModalPanelRu

28、nLoopMode(Cocoa)描述:处理modal panels事件。Event tracking模式,用户基本不会使用。定义:UITrackingRunLoopMode(iOS) NSEventTrackingRunLoopMode(cocoa)描述:在拖动loop或其他usererface tracking loops时处于此种模式下,在此模式下会限制输入事件的处理。例如,当手指按住UITableView拖动时就会处于此模式。 Common模式定义:monModes (Cocoa) monModes (Core Foundation)描述:这是一个伪模式,其为一组run loop mod

29、e的集合,将输入源加入此模式意味着在 Common Modes中包含的所有模式下都可以处理。在Cocoa应用程序中,默认情况下Common Modes包含default modes,modal modes,event Tracking modes.可使用方法想 mon Modes中添加自定义modes。获取当前线程的run loop modeNSString* runLoopMode = NSRunLoop currentRunLoop currentMode;二.NSTimer、NSURLConnection与UITrackingRunLoopModeNSTimer与NSURLConnection默认运行在default mode下,这样当用户在拖动UITableView处于 UI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论