iOS學習筆記——滾動視圖(scrollView),iosscrollview
滾動視圖:在根視圖中添加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