iOS學習筆記--滾動視圖(UIScrollView)

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

[objc] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. @interface BoViewController : UIViewController<UIScrollViewDelegate>  
  2. //滾動視圖對象  
  3. @property (retainnonatomicUIScrollView *scrollView;  
  4. //視圖中小圓點,對應視圖的頁碼  
  5. @property (retainnonatomicUIPageControl *pageControl;  
  6. //動態數組對象,存儲圖片  
  7. @property (retainnonatomicNSMutableArray *images;  
  8. @end  

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

[objc] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     //初始化scrollView  
  5.     self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(00320345)];  
  6.     //初始化pageControl  
  7.     self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(034432036)];  
  8.     //初始化數組,存儲滾動視圖的圖片  
  9.     self.images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"text1.png"],[UIImage imageNamed:@"text2.png"],[UIImage imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil];  
  10.     //把scrollView與pageControl添加到當前視圖中  
  11.     [self.view addSubview:self.scrollView];  
  12.     [self.view addSubview:self.pageControl];  
  13.     //設置視圖的背景顏色  
  14.     self.view.backgroundColor = [UIColor blackColor];  
  15.     //調用 setuoPage方法  
  16.     [self setupPage:nil];     
  17. }  
  18. //改變滾動視圖的方法實現  
  19. - (void)setupPage:(id)sender  
  20. {  
  21.     //設置委託  
  22.     self.scrollView.delegate = self;  
  23.     //設置背景顏色  
  24.     self.scrollView.backgroundColor = [UIColor blackColor];  
  25.     //設置取消觸摸  
  26.     self.scrollView.canCancelContentTouches = NO;  
  27.     //設置滾動條類型  
  28.     self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;  
  29.     //是否自動裁切超出部分  
  30.     self.scrollView.clipsToBounds = YES;  
  31.     //設置是否可以縮放  
  32.     self.scrollView.scrollEnabled = YES;  
  33.     //設置是否可以進行畫面切換  
  34.     self.scrollView.pagingEnabled = YES;  
  35.     //設置在拖拽的時候是否鎖定其在水平或者垂直的方向  
  36.     self.scrollView.directionalLockEnabled = NO;  
  37.     //隱藏滾動條設置(水平、跟垂直方向)  
  38.     self.scrollView.alwaysBounceHorizontal = NO;  
  39.     self.scrollView.alwaysBounceVertical = NO;  
  40.     self.scrollView.showsHorizontalScrollIndicator = NO;  
  41.     self.scrollView.showsVerticalScrollIndicator = NO;  
  42.     //用來記錄頁數  
  43.     NSUInteger pages = 0;  
  44.     //用來記錄scrollView的x座標  
  45.     int originX = 0;      
  46.     for(UIImage *image in self.images)  
  47.     {  
  48.         //創建一個視圖  
  49.         UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];  
  50.         //設置視圖的背景色  
  51.         pImageView.backgroundColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0];  
  52.         //設置imageView的背景圖  
  53.         [pImageView setImage:image];  
  54.         //給imageView設置區域  
  55.         CGRect rect = self.scrollView.frame;  
  56.         rect.origin.x = originX;  
  57.         rect.origin.y = 0;  
  58.         rect.size.width = self.scrollView.frame.size.width;  
  59.         rect.size.height = self.scrollView.frame.size.height;  
  60.         pImageView.frame = rect;  
  61.         //設置圖片內容的顯示模式(自適應模式)  
  62.         pImageView.contentMode = UIViewContentModeScaleAspectFill;  
  63.         //把視圖添加到當前的滾動視圖中  
  64.         [self.scrollView addSubview:pImageView];  
  65.         //下一張視圖的x座標:offset爲:self.scrollView.frame.size.width.  
  66.         originX += self.scrollView.frame.size.width;  
  67.         //記錄scrollView內imageView的個數  
  68.         pages++;  
  69.     }  
  70.     //設置頁碼控制器的響應方法  
  71.     [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];  
  72.     //設置總頁數  
  73.     self.pageControl.numberOfPages = pages;  
  74.     //默認當前頁爲第一頁  
  75.     self.pageControl.currentPage = 0;  
  76.     //爲頁碼控制器設置標籤  
  77.     self.pageControl.tag = 110;  
  78.     //設置滾動視圖的位置  
  79.     [self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.bounds.size.height)];      
  80. }  
  81. //改變頁碼的方法實現  
  82. - (void)changePage:(id)sender  
  83. {  
  84.     NSLog(@"指示器的當前索引值爲:%i",self.pageControl.currentPage);  
  85.     //獲取當前視圖的頁碼  
  86.     CGRect rect = self.scrollView.frame;  
  87.     //設置視圖的橫座標,一幅圖爲320*460,橫座標一次增加或減少320像素  
  88.     rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;  
  89.     //設置視圖縱座標爲0  
  90.     rect.origin.y = 0;  
  91.     //scrollView可視區域  
  92.     [self.scrollView scrollRectToVisible:rect animated:YES];      
  93. }  
  94. #pragma mark-----UIScrollViewDelegate---------  
  95. //實現協議UIScrollViewDelegate的方法,必須實現的  
  96. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
  97. {  
  98.     //獲取當前視圖的寬度  
  99.     CGFloat pageWith = scrollView.frame.size.width;  
  100.     //根據scrolView的左右滑動,對pageCotrol的當前指示器進行切換(設置currentPage)  
  101.     int page = floor((scrollView.contentOffset.x - pageWith/2)/pageWith)+1;  
  102.     //切換改變頁碼,小圓點  
  103.     self.pageControl.currentPage = page;  
  104. }  
  105.   
  106. - (void)didReceiveMemoryWarning  
  107. {  
  108.     [super didReceiveMemoryWarning];  
  109.     // Dispose of any resources that can be recreated.  
  110. }  
  111. //釋放創建的對象  
  112. - (void)dealloc  
  113. {  
  114.     [_pageControl release];  
  115.     [_scrollView release];  
  116.     [super dealloc];  
  117. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章