初學者用storyBoard時選中Auto Layout 會自動添加很多約束導致滾動視圖不可滾動,最好在開始設置控件之前將滾動視圖和圖像視圖的A L屬性禁止掉。
滾動視圖實現
self.scrollView.contentSize = self.imageView.image.size;
讓圖片縮放
採用UIScrollViewDelegate協議並實現代理方法返回須要縮放的內容視圖
-(UIView *)viewForZoomingInScrollView: (UIScrollView *)scrollView
{
return self.imageView;
}
canCencelContentTouches 屬性
如果屬性值爲YES並且跟蹤到手指正觸摸到一個內容控件,這時如果用戶拖動手指的距離足夠產生滾動,那麼內容控件將收到一個touchesCancelled:withEvent:消息,而scroll view將這次觸摸作爲滾動來處理。如果值爲NO,一旦content view開始跟蹤(tracking==YES),則無論手指是否移動,scrollView都不會滾動。
簡單通俗點說,如果爲YES,就會等待用戶下一步動作,如果用戶移動手指到一定距離,就會把這個操作作爲滾動來處理並開始滾動,同時發送一個touchesCancelled:withEvent:消息給內容控件,由控件自行處理。如果爲NO,就不會等待用戶下一步動作,並始終不會觸發scrollView的滾動了。
ScrollView的倆個屬性 DelaysContentTouches 和 CanCancelCotentTouch 影響 scrollView中添加按鈕等控件的事件響應問題 (先觸發按鈕還是先觸發滾動的問題)
假設視圖中存在按鈕 我在代碼中測試實現了下面4種不同組合的效果 1代表設置了DelaysContentTouches屬性
2代表設置了 CanCancelContentTouches 屬性
[scrollView setDelaysContentTouches:NO]; 1
[scrollView setCanCancelContentTouches:NO]; 2
設置情況 點擊按鈕效果 在按鈕上拖動 和 在視圖中拖動
1、2都不設置 點擊按鈕延遲高亮 拖動按鈕無反應 視圖滾動
1設置2 不設置 按鈕正常點擊 拖動時候觸發按鈕 不滾動
1不設置 2設置 點擊延遲高亮 快速拖動視圖滾動 慢速按鈕觸發
1、2都設置 按鈕正常 點擊 拖動時候觸發按鈕 不滾動