zoukankan      html  css  js  c++  java
  • 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{}的方法 并实现

     

  • 相关阅读:
    四、元数据ParameterMetaData
    三、PreparedStatement对象(重点)
    二、properties文件存储信息
    一、JDBC3.0标准中常用接口与类
    十一、MySQL 数据库存储引擎介绍
    十、执行计划
    注册表中一些项目拒绝访问,拒绝更改权限,拒绝删除
    x64dbg 的条件断点及断点日志
    手机APP无法抓包HTTPS解决方案
    原版黑苹果安装(个人备忘)
  • 原文地址:https://www.cnblogs.com/katydid/p/4279223.html
Copyright © 2011-2022 走看看