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

 

时间: 2024-07-30 10:01:33

IOS之UIKit_Day05的相关文章

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

使用fruitstrap实现命令行将IPA包安装到iOS设备上

Requirements Mac OS X. Tested on Snow Leopard only. You need to have a valid iPhone development certificate installed. Xcode must be installed, along with the SDK for your iOS version. Usage fruitstrap [-d] -b <app> [device_id] Optional -d flag laun

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

iOS证书说明和发布

1.首先通过钥匙串访问——证书助理——从证书颁发机构请求证书——填写证书信息(邮箱,常用名称,存储到磁盘)——存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹果开发者账号中,然后就没用了)到本地 2.苹果开发者账号中,创建证书(Development和Production)——上传CSR文件——下载证书运行 ( xxx.cer文件) 注意:只有在当前电脑中生成本地生成证书,上传到苹果开发账号,然后下载cer文件运行后,钥匙串中才有证书以及对应的秘钥 如果

iOS开发——项目实战总结&amp;UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

解决ios下的微信打开的页面背景音乐无法自动播放

后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监听这个事件来触发的.那有个坑就是 如果微信已经ready了,但还没执行到你监听这个ready事件的代码,那么你的监听是没用的,所以最理想的情况是,监听的js放在head前面(放在css外链之前),确保最新执行,切记!切记!. ·另一个坑就是,本文的解决方案只适合一开始就播放的背景音乐.如果你是做那种

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

iOS库--.a与.framework

一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存. 三.iOS里静态库形式? .a和.framework 四.iOS里动态库形式? .dylib和.framework 五.framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建立的.fram