scrollview的屬性解釋和分頁用法

轉自:http://blog.sina.com.cn/s/blog_8764c3140100wtoc.htmlhtml

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;
}
ios

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; 
, 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;
轉自:君哥哥愛漂移的空間
算法

UIScrollView分頁算法
    在使用 UIScrollView 分頁的時候咱們如何肯定當前是第幾頁?
    首先須要開啓分頁設置
    scrollView.pagingEnabled = YES;
    而後咱們在委託的類上實現如下方法
      // 根據當前的x座標和頁寬度計算出當前頁數
     int currentPage = floor((sender.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
}
    
框架

frame.origin.x  的意思和做用?   
scrollView.frame
一個view的frame 包含它的矩形形狀(size)的長和寬。
和它在父視圖中的座標原點(origin)x和y座標  
frame  框架
origin就是所謂的起點位置
frame在ios裏並非一個具體的對象,他只是一些控件的一個屬性。
frame的值就是一個CGRect 包括(originX,originY,width,height)。
originX和originY對應着該對象在其superview中的座標,也就是說他是一個相對座標。
view 的frame是view在它的super view 的位置與尺寸。
UIView中bounds和frame的差異?
 什麼是絕對座標值,相對座標值?
絕對座標是:X,Y    就是相對於座標原點的。 
bounds是指這個view在它本身座標系的座標和大小 而frame指的是這個view在它superview的座標系的座標和大小,
區別主要在座標系這一塊。
frame 是相對座標。bounds是絕對座標。
很明顯,bounds的原點是(0,0)點,而frame的原點倒是任意的。
frame 若是一個按鈕,是在表格裏,按鈕的frame 的座標也是相對的,並非相對屏幕,也就是說是相對座標,不是絕對座標。
很明顯一個是本身爲原點的座標系,一個是以屏幕爲原點的座標系。
atom

相關文章
相關標籤/搜索