IOS開發之UIScrollView與UIPageControl的用法

jopen 10年前發布 | 39K 次閱讀 iOS開發 移動開發 IOS

@interface RootViewController : UIViewController<UIScrollViewDelegate>

{

UIScrollView *_scrollView;

NSMutableArray *slideImages;

UIPageControl *_page;

}

@end

import "RootViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController

  • (id)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle )nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

    // Custom initialization

}

return self;

}

  • (void)viewDidLoad

{

[super viewDidLoad];



_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, 320, 240)];

_scrollView.bounces = NO;

_scrollView.pagingEnabled = YES;

_scrollView.delegate = self;

_scrollView.contentOffset = CGPointMake(320, 0);

_scrollView.contentSize = CGSizeMake(1920,240);

_scrollView.showsVerticalScrollIndicator =NO;

_scrollView.showsHorizontalScrollIndicator = NO;

_scrollView.userInteractionEnabled = YES;

[self.view addSubview:_scrollView];

[_scrollView release];



slideImages = [[NSMutableArray alloc]initWithObjects:@"1.jpeg",@"2.jpg",@"3.jpeg",@"4.jpeg", nil];



UIImageView *imageView = [[UIImageView alloc]

                          initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]];

imageView.frame = CGRectMake(0, 0, 320, 240);

[_scrollView addSubview:imageView];

[imageView release];



for (int i = 0;i<[slideImages count];i++) {

    //loop this bit

    UIImageView *imageView = [[UIImageView alloc]

                              initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];

    imageView.frame = CGRectMake(320*i+320, 0, 320, 240);

    imageView.userInteractionEnabled = YES;

    [_scrollView addSubview:imageView];

    [imageView release];

}



imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]];

imageView.frame = CGRectMake(320*5, 0, 320, 240);

[_scrollView addSubview:imageView];



[imageView release];





_page = [[UIPageControl alloc]initWithFrame:CGRectMake(240, 230, 70, 30)];

_page.numberOfPages = 4;

_page.currentPage = 0;



// _page.backgroundColor = [UIColor grayColor];

[_page addTarget:self action:@selector(pageAction) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:_page];

[_page release];

// Do any additional setup after loading the view.

}

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

int currentPage = (_scrollView.contentOffset.x - _scrollView.frame.size.width

                         / ([slideImages count]+2)) / _scrollView.frame.size.width + 1;

NSLog(@"%d",currentPage);

if (currentPage==0) {

    [_scrollView scrollRectToVisible:CGRectMake(320*4, 0, 320, 240) animated:NO];

}

else if (currentPage==([slideImages count]+1)) {

        //如果是最后+1,也就是要開始循環的第一個

        [_scrollView scrollRectToVisible:CGRectMake(320, 0, 320, 240) animated:NO];

    }

}

  • (void)scrollViewDidScroll:(UIScrollView *)sender

{

int page = _scrollView.contentOffset.x/320-1;

_page.currentPage = page;

}

-(void)pageAction

{

int page = _page.currentPage;

[_scrollView setContentOffset:CGPointMake(320 * (page+1), 0)];

}

  • (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

  • (void)dealloc {
[slideImages release];

[super dealloc];

}

@end</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!