IOS之UIKit_Day05
DAY05
回顾
1 多MVC之间的页面切换
1.1推出新的MVC
presentViewController
1.2返回到推出的原VC
dismissViewController
2 多MVC之间的切换传值
2.1正向传值
在B中声明一个属性 A中给这个属性赋值 然后传到B中使用
2.2 反向传值
方法一:在B中记录A的引用 回传时就可以给A传值
方法二:(委托 协议)在委托方中定义协议 增加Delegate属性 合适时激发消息
代理方:遵守协议 实现方法 将自己设置为代理对象
其他方法:Block块 通知
3 增加的Delegate属性 是weak?(避免循环引用)
A推出B时已经强引用了所以A释放才能释放B;B如果Delegate设置成Strong那么B也需要强引用A,那么B释放才能释放A 这样就出现了循环引用
----------------------------------------------------------------------------------------------------------------------
1 UINavigationController 导航控制器
1.1 是什么?
继承自UIViewController,依然是控制器的一种。但是这种控制器没有View 是管理控制器的控制器
1.2 优点?
能够管理和控制VC的走向 比present更方便
1.3 如何使用?
step1:创建UINavigationController的实例
step2:创建一个具体的VC实例 并将这个VC实例设置为NavigationController的根视图控制器
step3:设置NavigationController为window的根视图控制器
step4:如果想推出新的VC 可以使用pushviewController 返回则使用popViewController
1.4 内部工作原理
1》NavigationController内部有一个可以存储多个VC的数组 就是Self.NavigationController.viewcontroller属性,并且这个数组使用“栈”的方式管理数据。栈:先进后出。
2》NavigationController必须有一个根视图作为控制器第一个展示VC
3》push一个新的VC时还需要往栈内存一个VC,新VC入栈之前显示那个VC不会释放。
4》pop现有的VC 才会被释放掉
5》不能pop根VC
1.5如何配置导航栏
1.5.1 访问导航栏:self.NavigationItem
导航栏分三个部分:
1》左边
self.NavigationItem.leftBarButtonItem 返回类型是一个UIBarButtonItem类型 所以要定义一个 UIBarButtonItem
2》中间
self.title(标题)
3》右边
self.NavigationItem.righrtBarButtonItem 返回类型是一个UIBarButtonItem类型 所以要定义一个 UIBarButtonItem
1.6 如何配置工具栏
1.6.1访问工具栏:self.toolBarItem
工具栏中加载的也是UIBarButtonItem
self.NavigationController.toolbarHidden=NO设置关闭隐藏
1.6.2 定义空间位置可以借助木棍 和 弹簧《特效按钮》
//弹簧自适应
UIBarButtonItem *butt1=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
//木棍距离是固定的
UIBarButtonItem *butt2=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
1.7 在推出新的VC时设置所有Button都隐藏 VC.hidesButtomBarWhenPushed=YES
1.8 导航控制器可以设置的属性和区域
属性:
.title 标题
.navigationItem.leftBarButton/s 一个左控件/多个
.NavigationItem.rightBarButton/s
.toolBarItems
以上四个属性设置只针对当前VC属性
.NavigationController.toolBarItem设置后针对导航控制器管理的所有VC都生效
1.9 在不同VC中self.navigationltem 是同一个控制器
1.10 push只能左右推出 要想上下推出,必须重新定义一个Navigationitem 使用prese
2 UIImage View<有外观的控件>
2.1 如何使用:
属性:ContentMode 用于设置显示方法 枚举值
UIViewContentModeScaleAspectFit 在维持宽高比不变的情况下 将整张照片显示(会有留白)
UIViewConteModeScaleAspectFill:在维持宽高比不变的情况下 将ImageView所占的区域填满 所以只会显示图片的一部分(不会留白)
UIViewConteModeScaleToFill:修改宽高比 使其填满屏幕(不会留白边)
常用属性:
imageView.contentMode(设置图片的显示模式)
imageView.layer.CornerRandius(设置控件在绘制时与边角相切员半径)
imageView.layer.MasksToBounds(是否按照边缘添加遮罩层)
3 UIScrollView:
3.1 是什么?
在有限的区域显示更多的信息或者图片
3.2 本质?
管理view的view scrollView本身没有任何外观 依靠添加到scrollrollview中的其他视图完成界面本身的显示
注:设置特效
设置没有白边:scrollView.bounces=NO;
设置水平没有移动底纹 scrollView.showsHorizontalScrollView=NO;
设置垂直方向没有移动底纹 scrollView.showsVerticalScrollView=NO;
3.3 如何使用:
1》创建UIImageView的实例 imageView
2》创建UIScrollView的实例 scrollView
3》设置UIscrollView的实例的大小
scrollView.frame=CGRectMake(0,0,self.frame.size.width,self.view.frame.size.height);用于显示的位置大小
4》设置滚动区域的大小
scrollView.contentSize=ImageView.frame.size
5》把ImageView给视图scrollView
[scrollView addSubview:ImageView]
6》把scrollView添加到视图中
3.4 如何实现滚动内容的缩放:
1》设置滚动内容缩放的最大比率 最大比率为1.0
2》设置滚动内容缩放的最小比率 取长和宽缩放比率最小的一个
3》回答问题 说明scrollView里面的那个视图需要缩放
----------------------------------------------------------------------------------------------------------------------
总结:
1 显示图片屏幕中并能实现滑动显示完整
1》定义一个UIImage的实例来接受一张图片 image
2》定义一个UIimageview的实例来显示image imageView
3》定义一个UIScrollView的实例来管理imageView scrollView
4》把imageView添加到scrollView中
5》设置scrollView的frame为当前屏幕的frame
6》设置scrollView的contentsize大小为整张imageView的大小
7》把scrollView 添加到self.view中
2 设置图片可以放大缩小
在上面6》-----------7》之间添加下:
a>在程序中声明一个UIImageView的实例(全局的 调用方法时使用)并且遵守协议<UIScrollViewDelegate>
b>把之前定义的UIImageView的实例给self.ImageView
c>设置scrollView最大缩放比
scrollView.maximumZoomScale=1.0;
d>设置scrollView的最小缩放比
scrollview.minimumZoomScale=MIN(width,height);
CGFloat width=scrollView.frame.size.width /imageView.frame.size.width ;
CGFloat height=scrollView.frame.size.height /imageView.frame.size.height ;
e>把当前视图设置为代理:
scrollView.delegate=self
f>实现方法
-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{
return self.imageView;
}
3 设置小白点 并且小白点跟着移动
1:在7》之后创建UIPageController的实例pageControl
2:设置pageControl的frame属性x=0 y=当前屏幕的大小下方某一位置 width为当前屏幕的大小 height设置一定的高度
3:设置小白的个数
pageControl.numberOfPages=self.imageNames.count;
4:关闭交互功能pageControl.userInteractionEnabled=NO;开启时可以实现点击小白点的作用小白点跟着移动
5:定义一个全局的pageControl self.pageControl=pageControl;
6:把pageControl赋给当前的self.view
7:遵守<UIScrollViewDelegate>协议
8:实现scrollView移动后需要实现的事件
-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
//获取移动的偏移坐标
CGPoint offSet=scrollView.contentOffset;
//根据坐标求出滚动倒那一屏幕
NSInteger index=offSet.x/scrollView.frame.size.width;
self.pageControl.currentPage=index;
}
4 在最后一屏添加一个按钮
1、在7》之后创建一个Button的按钮实例
2、设置button的frame属性x=view的宽度*图片的个数-1 y=0 ,width=view.fram.size.width,height=view.frame.size.height;
3、位button添加方法[Button addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside];
4、把button的实例添加到scrollview中
5、定义一个-(void)start{}的方法 并实现
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。