DAY05數組
回顧ide
1 多MVC之間的頁面切換工具
1.1推出新的MVC代理
presentViewController對象
1.2返回到推出的原VC繼承
dismissViewController事件
2 多MVC之間的切換傳值圖片
2.1正向傳值內存
在B中聲明一個屬性 A中給這個屬性賦值 而後傳到B中使用get
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{}的方法 並實現