iOS 重要的控件ScrollView

iOS開發(fā)中出現(xiàn)頻率高的二個(gè)框架分別是tableView和CollectionView,但是他們都是繼承于ScrollView。這里整理了一下ScrollView控件的使用

1 UIScrollView控件是什么?

(1)移動設(shè)備的屏幕??是極其有限的,因此直接展示在用戶眼前的內(nèi)容也相當(dāng)有限
(2)當(dāng)展?的內(nèi)容較多,超出?個(gè)屏幕時(shí),用戶可通過滾動手勢來查看屏幕以外的內(nèi)容
(3)普通的UIView不具備滾動功能,不能顯示過多的內(nèi)容
(4)UIScrollView是一個(gè)能夠滾動的視圖控件,可以用來展?大量的內(nèi)容,并且可以通過滾 動查看所有的內(nèi)容

2 UIScrollView的簡單使用

(1)將需要展?的內(nèi)容添加到UIScrollView中
(2)設(shè)置UIScrollView的contentSize屬性,告訴UIScrollView所有內(nèi)容的尺寸,也就是告訴 它滾動的范圍(能滾多遠(yuǎn),滾到哪里是盡頭)

3 屬性

常用屬性:
1)@property(nonatomic)CGPointcontentOffset; 這個(gè)屬性用來表?UIScrollView滾動的位置

2)@property(nonatomic)CGSizecontentSize;這個(gè)屬性用來表?UIScrollView內(nèi)容的尺?寸,滾動范圍(能滾多遠(yuǎn))

3)@property(nonatomic)UIEdgeInsetscontentInset;這個(gè)屬性能夠在UIScrollView的4周增加額外的滾動區(qū)域

其他屬性:

1)@property(nonatomic) BOOL bounces; 設(shè)置UIScrollView是否需要彈簧效果

2)@property(nonatomic,getter=isScrollEnabled)BOOLscrollEnabled;設(shè)置UIScrollView是否能滾動

3)@property(nonatomic) BOOL showsHorizontalScrollIndicator; 是否顯示水平滾動條

4)@property(nonatomic) BOOL showsVerticalScrollIndicator; 是否顯示垂直滾動條

4 實(shí)例代碼
#import "ViewController.h"

@interface ViewController ()
{
    
    UIScrollView *_scrollView;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 1.創(chuàng)建UIScrollView
         UIScrollView *scrollView = [[UIScrollView alloc] init];
        scrollView.frame = CGRectMake(0, 20, 350, 350); // frame中的size指UIScrollView的可視范圍
         scrollView.backgroundColor = [UIColor grayColor];
         [self.view addSubview:scrollView];
    
    // 2.創(chuàng)建UIImageView
         UIImageView *imageView = [[UIImageView alloc] init];
         imageView.image = [UIImage imageNamed:@"1.jpg"];
         CGFloat imgW = imageView.image.size.width; // 圖片的寬度
         CGFloat imgH = imageView.image.size.height; // 圖片的高度
         imageView.frame = CGRectMake(0, 0, imgW, imgH);
        [scrollView addSubview:imageView];
    
    // 設(shè)置UIScrollView的滾動范圍(內(nèi)容大小)
         scrollView.contentSize = imageView.image.size;
    
    // 隱藏水平滾動條
         scrollView.showsHorizontalScrollIndicator = NO;
         scrollView.showsVerticalScrollIndicator = NO;
    // 偏移量
    scrollView.contentOffset = CGPointMake(0, 100);
    // 去掉彈簧效果
     //    scrollView.bounces = NO;
    
    // 增加額外的滾動區(qū)域
    
         scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
    _scrollView = scrollView;
    
}

5 frame,contentOffset,contentSize,contentInset之間的關(guān)系

(1)UIScrollView的frame與contentsize屬性的區(qū)分:UIScrollView的frame指的是這個(gè)scrollview的可視范圍(可看見的區(qū)域),contentsize是其滾動范圍。
(2)contentinset(不帶*號的一般不是結(jié)構(gòu)體就是枚舉),為UIScrollView增加額外的滾動區(qū)域。(上,左,下,右)逆時(shí)針。contentinset可以使用代碼或者是視圖控制器進(jìn)行設(shè)置,但兩者有區(qū)別(注意區(qū)分)。
(3)contentsize屬性只能使用代碼設(shè)置。
(4)contentoffset是個(gè)CGpoint類型的結(jié)構(gòu)體,用來記錄ScrollView的滾動位置,即記錄著“框”跑到了哪里。知道了這個(gè)屬性,就知道了其位置,可以通過設(shè)置這個(gè)屬性來控制這個(gè)“框”的移動。
(5)不允許直接修改某個(gè)對象內(nèi)部結(jié)構(gòu)體屬性的成員,三個(gè)步驟(先拿到值,修改之,再把修改后的值賦回去)。
(6)增加了額外區(qū)域后,contentoffset的原點(diǎn)發(fā)生變化

參考文章 UIScrollView控件介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容