一、UIScrollView
1.常見屬性
@property(nonatomic) CGPoint contentOffset; // 記錄UIScrollView滾動的位置
@property(nonatomic) CGSize contentSize; // 內容尺寸(能滾動的范圍)
@property(nonatomic) UIEdgeInsets contentInset; // 額外增加的滾動區域(在上下左右4個邊緣)
@property(nonatomic,assign) id<UIScrollViewDelegate> delegate; // 代理對象
@property(nonatomic) BOOL bounces; // 是否有彈簧效果
@property(nonatomic) BOOL showsHorizontalScrollIndicator; // 是否顯示水平滾動條
@property(nonatomic) BOOL showsVerticalScrollIndicator; // 是否顯示垂直滾動條
// tip : 重點掌握contentSize、contentOffset、delegate
?
2.捏合手勢縮放
1> 縮放原理詳解
* 當用戶嘗試縮放UIScrollView的時候,UIScrollView會嘗試向它的delegate(代理對象)發送一條消息,詢問要縮放哪一個子控件
* 換種說法,也就是說,UIScrollView會嘗試調用delegate的某個方法,詢問要縮放哪一個子控件,并且該方法的返回值就是需要縮放的子控件
?
2> 縮放原理總結
* UIScrollView先設置delegate對象
* UIScrollView必須知道delegate是通過哪個方法返回需要縮放的子控件,delegate必須實現那個返回需要縮放子控件的方法
* UIScrollView要跟delegate對象協商好:用哪一個方法返回需要縮放的子控件
* 那個返回需要縮放子控件的方法就是:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
?
3.縮放的一般實現步驟(比如縮放UIScrollView內部的UIImageView)
1> 設置UIScrollView的delegate為控制器(self)
2> 控制器遵守UIScrollViewDelegate協議? <UIScrollViewDelegate>
3> 控制器實現-(UIView *)viewForZoomingInScrollView:方法,返回需要縮放的子控件
4> 設置最大和最小縮放比例
?
二、代理設計模式
1.使用場合
1> A想讓B幫忙做一些事情,就讓B成為A的代理
2> A想通知一下B發生了某些事情,或者想傳遞一些數據給B,就讓B成為A的代理
3> B想監聽A所做的一些事情,就讓B成為A的代理
?
2.使用步驟
1> 定義一份協議
2> B要遵守協議,實現相應的方法
3> A中要定義一個代理屬性 id<協議> delegate;
4> 創建B對象,設置A的delegate屬性為B對象
?
三、鍵盤處理
1.退出鍵盤的2種方法
1> 讓文本框把鍵盤退回去(調用UITextField的resignFirstResponder方法)
[textField resignFirstResponder];
?
2> 一次性退出任何鍵盤
[self.view endEditing:YES];
?
2.自定義鍵盤
@property (readwrite, retain) UIView *inputView;
?
3.自定義鍵盤頂部顯示的控件
@property (readwrite, retain) UIView *inputAccessoryView;
?
四、必須掌握
1.UIScrollView的contentOffset、contentSize屬性
2.UIScrollView的contentSize和frame.size的區別
3.UIScrollView的常見代理方法
// 當UIScrollView要進行縮放的時候調用,此方法返回需要進行縮放的控件
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
// 當UIScrollView滾動了就會調用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
4.UIPageControl的簡單使用
* numberOfPages : 總頁數
* currentPage : 當前頁碼
5.鍵盤的退出