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{}的方法 并实现

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。