UIScrollView 小結


1. @property(nonatomic) BOOL bounces //當滾動到內容邊緣是否發生反彈,default is YES.
2. @property(nonatomic) BOOL alwaysBounceHorizontal; //是否只在水平發生反彈,當內容到達
邊緣。。default is NO,
如果要只在水平反彈那麼bounces必須爲YES.
3. @property(nonatomic) BOOL alwaysBounceVertical   //當滾動到達邊緣時,是否只有垂直邊緣才發生
反彈。default is no.
4. @property(nonatomic) BOOL bouncesZoom;   //當在縮放時,到達圖片最大縮放倍數(maximumZoomScale)
或者是最小縮放倍數( minimumZoomScale)時,爲了告訴用戶縮放倍數已達極限,是否發生動態反彈的效果來
告訴用戶。defaults is YES.
5. @property(nonatomic) BOOL canCancelContentTouches; //當手指觸摸屏幕後,並沒有開始拖動,而隔一段時間後
再開始拖動,這個屬性決定是否scorllView裏的圖片是否會再繼續隨着手指的滑動,而圖片跟着滑動。defualt is
NO,圖片會跟着手指滑動而滑動。
6. @property(nonatomic) CGPoint contentOffset; //scrollView裏的內容(如裏面存的圖片)的原點,距離scrollView的
frame屬性裏的原點(origin)的距離。按照一般思維來說,如scrollView的frame爲(0,0,320,480),而scrollView裏的
圖片座標爲:(-320,0,320*2,480);那麼contentOffset應該爲(-320,0),但實際上是(320,0),可能是爲了方便設置,取爲
正吧,反正contentOffset的x,y是不可能爲負的,那樣代表滾動已到邊緣,發生反彈或者不能再往邊緣外拖動。
7. @property(nonatomic) CGSize contentSize; //scrollView裏能存儲圖片最大size。比如scrollView爲屏幕
大小,而要在裏面存放幾張屏幕大小的圖片,那麼一定不能忘了在放圖片之前設置contentSize.
8. @property(nonatomic, assign) id<UIScrollViewDelegate> delegate;  //scrollView的代理。如:
當要實現縮放圖片時,必須實現UIScrollViewDelegate裏的兩個方法,且最大、最小縮放倍數必須不一樣maximumZoomScale
,minimumZoomScale:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;  //返回要縮放的圖片(必須在代理類裏實現)
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
//重新確定縮放完後的縮放倍數.
常用來縮放方法:- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated,把從scrollView裏截取的矩形
區域縮放到整個scrollView當前可視的frame裏面。所以如果截取的區域大於scrollView的frame時,圖片縮小,
如果截取區域小於frame,會看到圖片放大。一般情況下rect需要自己計算出來。
比如,要把scrollView原來座標點爲(40,40)的內容周圍內容在scrollView裏放大一倍,可以求出需要從scrollView裏
截取圖片的frame,當然主要是求截取圖片座標原點,可以想象,內容放大一倍,那麼截取圖片的大小寬度肯定是
scrollView的frame大小一半。如下列方法:
- (CGRect) getRectWithScale:(float)scale andCenter:(float)center
{
 CGRect newRect;
 newRect.size.width=scrollView.frame.size.width/scale;
 newRect.size.height=scrollView.frame.size.height.scale;
 newRect.origin.x=center.x-newRect.size.width/2;
 newRect.origin.y=center.y-newRect.size.height/2;
 return newRect;
}

1. @property(nonatomic, getter=isDirectionalLockEnabled) BOOL directionalLockEnabled; //滾動方向的鎖定。
如果一開始拖動方向是水平或者垂直,且該屬性設置爲YES,那麼另外一個方向將會被鎖定,不能在那個方向拖動了。如果
開始拖動方向爲斜的,那麼不會禁止任何一個方向的拖動。
2. @property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle; //拖動圖片時,下面或者右側的那個滾動進度條
顯示的風格,當然也可以把這個滾動條取消。可以用下面屬性:
@property(nonatomic) BOOL showsHorizontalScrollIndicator; //是否顯示水平滾動條
@property(nonatomic) BOOL showsVerticalScrollIndicator; //是否顯示垂直滾動條,default is YES
3. @property(nonatomic) float maximumZoomScale; //最大縮放倍數
 @property(nonatomic) float minimumZoomScale; //最大縮小倍數
通常情況下,最小倍數比scrollView的frame要小,而最大縮放倍數可能與contentSize有關,需要自己算出
最大縮放倍數,如:如果想最大縮放倍數爲5倍,那麼contentSize也應該設置爲5倍scrollView的frame大小。
假如想要雙擊scrollView裏的圖片放大,或者支持兩隻手指在屏幕捏放實現圖片縮放,必須重寫覆蓋繼承自
UIResponder的幾個交互方法:
﹣(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
﹣(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
﹣(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 
4.@property(nonatomic, getter=isPagingEnabled) BOOL pagingEnabled; //是否在拖動圖片後,圖片翻到
scrollView的下一個子視圖開始邊界. default is NO
@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled; //是否可以滾動。default is YES,
如果設置爲NO,那麼將scrollView將不會接受任何觸摸事件。
- (void)setZoomScale:(float)scale animated:(BOOL)animated;
轉自:君哥哥愛漂移的空間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章