iOS學習筆記——滾動視圖(scrollView)


滾動視圖:在根視圖中添加UIScrollViewDelegate協議,聲明一些對象屬性

@interface BoViewController : UIViewController<UIScrollViewDelegate>  
//滾動視圖對象  
@property (retain, nonatomic) UIScrollView *scrollView;  
//視圖中小圓點,對應視圖的頁碼  
@property (retain, nonatomic) UIPageControl *pageControl;  
//動態數組對象,存儲圖片  
@property (retain, nonatomic) NSMutableArray *images;  
@end  
/* 何問起 hovertree.com */

在程序中導入圖片,在.m文件中的代碼實現:

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    //初始化scrollView  
    self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 345)];  
    //初始化pageControl  
    self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 344, 320, 36)];  
    //初始化數組,存儲滾動視圖的圖片  
    self.images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"text1.png"],[UIImage imageNamed:@"text2.png"],[UIImage imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil];  
    //把scrollView與pageControl添加到當前視圖中  
    [self.view addSubview:self.scrollView];  
    [self.view addSubview:self.pageControl];  
    //設置視圖的背景顏色  
    self.view.backgroundColor = [UIColor blackColor];  
    //調用 setuoPage方法  
    [self setupPage:nil];     
}  
//改變滾動視圖的方法實現  
- (void)setupPage:(id)sender  
{  
    //設置委托  
    self.scrollView.delegate = self;  
    //設置背景顏色  
    self.scrollView.backgroundColor = [UIColor blackColor];  
    //設置取消觸摸  
    self.scrollView.canCancelContentTouches = NO;  
    //設置滾動條類型  
    self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;  
    //是否自動裁切超出部分  
    self.scrollView.clipsToBounds = YES;  
    //設置是否可以縮放  
    self.scrollView.scrollEnabled = YES;  
    //設置是否可以進行畫面切換  
    self.scrollView.pagingEnabled = YES;  
    //設置在拖拽的時候是否鎖定其在水平或者垂直的方向  
    self.scrollView.directionalLockEnabled = NO;  
    //隱藏滾動條設置(水平、跟垂直方向)  
    self.scrollView.alwaysBounceHorizontal = NO;  
    self.scrollView.alwaysBounceVertical = NO;  
    self.scrollView.showsHorizontalScrollIndicator = NO;  
    self.scrollView.showsVerticalScrollIndicator = NO;  
    //用來記錄頁數  
    NSUInteger pages = 0;  
    //用來記錄scrollView的x坐標  
    int originX = 0;      
    for(UIImage *image in self.images)  
    {  
        //創建一個視圖  
        UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];  
        //設置視圖的背景色  
        pImageView.backgroundColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0];  
        //設置imageView的背景圖  
        [pImageView setImage:image];  
        //給imageView設置區域  
        CGRect rect = self.scrollView.frame;  
        rect.origin.x = originX;  
        rect.origin.y = 0;  
        rect.size.width = self.scrollView.frame.size.width;  
        rect.size.height = self.scrollView.frame.size.height;  
        pImageView.frame = rect;  
        //設置圖片內容的顯示模式(自適應模式)  
        pImageView.contentMode = UIViewContentModeScaleAspectFill;  
        //把視圖添加到當前的滾動視圖中  
        [self.scrollView addSubview:pImageView];  
        //下一張視圖的x坐標:offset為:self.scrollView.frame.size.width.  
        originX += self.scrollView.frame.size.width;  
        //記錄scrollView內imageView的個數  
        pages++;  
    }  
    //設置頁碼控制器的響應方法  
    [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];  
    //設置總頁數  
    self.pageControl.numberOfPages = pages;  
    //默認當前頁為第一頁  
    self.pageControl.currentPage = 0;  
    //為頁碼控制器設置標簽  
    self.pageControl.tag = 110;  
    //設置滾動視圖的位置  
    [self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.bounds.size.height)];      
}  
//改變頁碼的方法實現  
- (void)changePage:(id)sender  
{  
    NSLog(@"指示器的當前索引值為:%i",self.pageControl.currentPage);  
    //獲取當前視圖的頁碼  
    CGRect rect = self.scrollView.frame;  
    //設置視圖的橫坐標,一幅圖為320*460,橫坐標一次增加或減少320像素  
    rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;  
    //設置視圖縱坐標為0  
    rect.origin.y = 0;  
    //scrollView可視區域  
    [self.scrollView scrollRectToVisible:rect animated:YES];      
}  
#pragma mark-----UIScrollViewDelegate---------  
//實現協議UIScrollViewDelegate的方法,必須實現的  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
{  
    //獲取當前視圖的寬度  
    CGFloat pageWith = scrollView.frame.size.width;  
    //根據scrolView的左右滑動,對pageCotrol的當前指示器進行切換(設置currentPage)  
    int page = floor((scrollView.contentOffset.x - pageWith/2)/pageWith)+1;  
    //切換改變頁碼,小圓點  
    self.pageControl.currentPage = page;  
}  
  
- (void)didReceiveMemoryWarning  
{  
    [super didReceiveMemoryWarning];  
    // Dispose of any resources that can be recreated.  
}  
//釋放創建的對象  
- (void)dealloc  
{  
    [_pageControl release];  
    [_scrollView release];  
    [super dealloc];  
}  /* 何問起 hovertree.com */

推薦:http://www.cnblogs.com/roucheng/p/3528371.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM