UIKit之UIScrollView、UIPageControl

UIScrollView

// 聲明
@property(nonatomic,retain)UIScrollView *scrollView;

    self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(100, 100, 200, 400)];
    self.scrollView.backgroundColor = [UIColor whiteColor];
   
    //1. contentSize 定義內(nèi)容區(qū)域大小 當(dāng)contentsize 比frame.size大時(shí),才可實(shí)現(xiàn)滾動(dòng)
    self.scrollView.contentSize = CGSizeMake(400, 800);
   
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2.png"]];
    imageView.tag = 100;
    imageView.frame = CGRectMake(0, 0, 200, 350);
    [self.scrollView addSubview:imageView];
   
    //2.  contentOffset 視圖左上角距離坐標(biāo)原點(diǎn)的偏移量
    self.scrollView.contentOffset = CGPointMake(-20, -50);
   
    //3.  scrollsToTop 滑動(dòng)到頂部
    self.scrollView.scrollsToTop = YES; // default YES.
   
    // 4. pagingEnabled 是否整屏滑動(dòng)
    self.scrollView.pagingEnabled = YES; // default NO.
   
    // 5. bounces邊界是否回彈
    self.scrollView.bounces = YES;// default YES.
   
    // 6. scroll 設(shè)置是否能夠滾動(dòng) (不常用)
    self.scrollView.scrollEnabled = YES;
    // 7. 顯示水平或豎直方向進(jìn)度條
    self.scrollView.showsHorizontalScrollIndicator = YES;
    self.scrollView.showsVerticalScrollIndicator = NO;
    // 8. 設(shè)置水平或豎直方向的邊框是否反彈
    self.scrollView.alwaysBounceHorizontal = YES;
    self.scrollView.alwaysBounceVertical = YES;
   
   
    // 縮放相關(guān)
    // 要實(shí)現(xiàn)縮放,還需要實(shí)現(xiàn)delegate,指定縮放的視圖是誰
   
    // 指定最大縮放 和 最小縮放
    self.scrollView.minimumZoomScale = 0.5;
    self.scrollView.maximumZoomScale = 2.0;
  
    // 設(shè)置縮放變化比例
    self.scrollView.zoomScale  = 1.5;
   
    // 控制縮放是否反彈
    self.scrollView.bouncesZoom = YES;
   
    [self addSubview:self.scrollView];
}
#pragma mark UIScrollViewDelegate
// 1. 遵守協(xié)議
@interface RootViewController : UIViewController<UIScrollViewDelegate>
 // 2.設(shè)置代理
self.rootV.scrollView.delegate = self;
// 3.實(shí)現(xiàn) 指定scrollView設(shè)置代理的方法
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    // 1.利用Tag值
    // return [scrollView viewWithTag:100];
    // 2. 利用子視圖
    return  scrollView.subviews[0];
}
// ScrollView 滾動(dòng)流程

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    NSLog(@"開始拖拽");
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"正在滾動(dòng)");
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView{
    NSLog(@"結(jié)束拖拽");
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    NSLog(@"開始減速");
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    NSLog(@"結(jié)束減速");
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    NSLog(@"我已經(jīng)完成縮放了");
}

UIPageControl

@property(nonatomic,retain)UIPageControl *page;

- (void)p_setupView{
    self.backgroundColor = [UIColor yellowColor];
    self.page = [[UIPageControl alloc]initWithFrame:CGRectMake(CGRectGetMinX(self.frame), CGRectGetMaxY(self.frame) - 50, CGRectGetWidth(self.frame), 50)];
    self.page.backgroundColor = [UIColor blackColor];

    [self addSubview:self.page];
    // 1. 一共多少頁
    self.page.numberOfPages = 5;
   
    // 2. 獲取當(dāng)前頁
    // NSInteger *i = self.page.currentPage;
   
    // 3. 設(shè)置頁面指示器 非當(dāng)前頁小圓點(diǎn) 的顏色
    self.page.pageIndicatorTintColor = [UIColor redColor];
   
    // 4. 設(shè)置頁面指示器 當(dāng)前頁小圓點(diǎn) 的顏色
    self.page.currentPageIndicatorTintColor = [UIColor greenColor];
   
    // 不常用且不明所以
    // 5. 跳轉(zhuǎn)頁面 關(guān)閉小圓點(diǎn)跳轉(zhuǎn)
    //self.page.defersCurrentPageDisplay = YES;
  
    self.page.hidesForSinglePage = YES;
    [self.page updateCurrentPageDisplay];
    [self.page sizeForNumberOfPages:2];
}

// 使用 添加action
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   // 添加action 
    [self.rootV.page addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
}
- (void)pageAction:(UIPageControl *)sender{
    NSLog(@"這是第 %ld 頁",sender.currentPage);
}

UIScrollView和UIPageControl 結(jié)合使用

// 遵循協(xié)議
@interface RootViewController ()<UIScrollViewDelegate>

@property(nonatomic,retain)RootView *rootV;
@property(nonatomic,retain)NSMutableArray *nameArr;

@end

@implementation RootViewController

-(void)loadView{
    self.rootV = [[RootView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    self.view = self.rootV;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // 1. 處理數(shù)據(jù)
    [self p_date];
    // 2. 顯示圖片
    [self p_show];
    // 3.設(shè)置代理
    self.rootV.scrollV.delegate = self;
    // 4. 設(shè)置圖片隨 currentpage移動(dòng)而換
    [self.rootV.pageC addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
   
    // Do any additional setup after loading the view.
}
- (void)pageAction:(UIPageControl *)sender{
    [UIView animateWithDuration:0.5 animations:^{
        self.rootV.scrollV.contentOffset = CGPointMake(self.rootV.pageC.currentPage * self.rootV.frame.size.width, 0);
    }];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    self.rootV.pageC.currentPage = scrollView.contentOffset.x / self.rootV.frame.size.width;
}
- (void)p_date{
    self.nameArr = [NSMutableArray array];
    for (int i = 0; i < 7; i ++) {
        NSString *name = [NSString stringWithFormat:@"%d.jpeg",i];
        [self.nameArr addObject:name];
    }
}
- (void)p_show{
    for (int i = 0; i < self.nameArr.count; i ++) {
        UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:self.nameArr[i]]];
        image.frame = CGRectMake(self.rootV.frame.size.width * i, 0, self.rootV.frame.size.width, self.rootV.frame.size.height);
        [self.rootV.scrollV addSubview:image];
    }
    self.rootV.scrollV.contentSize = CGSizeMake(self.rootV.frame.size.width * self.nameArr.count, self.rootV.frame.size.height);
    self.rootV.pageC.currentPage = 0;
    self.rootV.pageC.numberOfPages = self.nameArr.count;
    self.rootV.scrollV.pagingEnabled = YES;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赊窥,更是在濱河造成了極大的恐慌锨能,老刑警劉巖叔收,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乒省,死亡現(xiàn)場(chǎng)離奇詭異盏筐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烈钞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門泊碑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毯欣,你說我怎么就攤上這事馒过。” “怎么了酗钞?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵腹忽,是天一觀的道長。 經(jīng)常有香客問我砚作,道長窘奏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任葫录,我火速辦了婚禮着裹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘米同。我一直安慰自己骇扇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布面粮。 她就那樣靜靜地躺著少孝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熬苍。 梳的紋絲不亂的頭發(fā)上稍走,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼婿脸。 笑死粱胜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盖淡。 我是一名探鬼主播年柠,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼褪迟!你這毒婦竟也來了冗恨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤味赃,失蹤者是張志新(化名)和其女友劉穎掀抹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體心俗,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡傲武,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了城榛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揪利。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狠持,靈堂內(nèi)的尸體忽然破棺而出疟位,到底是詐尸還是另有隱情,我是刑警寧澤喘垂,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布甜刻,位于F島的核電站,受9級(jí)特大地震影響正勒,放射性物質(zhì)發(fā)生泄漏得院。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一章贞、第九天 我趴在偏房一處隱蔽的房頂上張望祥绞。 院中可真熱鬧,春花似錦鸭限、人聲如沸就谜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缆瓣,卻和暖如春喧枷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工隧甚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留车荔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓戚扳,卻偏偏與公主長得像忧便,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子帽借,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容