2011-07-31 31 views
0
UIScrollView *scrl = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 768,1024)]; 
scrl.contentSize = CGSizeMake(768 * 8, 1024); 

這裏是我的UIScrollView的定義,我有一個填充有8個圖像的滾動的每個圖像是768 * 1024,我怎樣才能使UIScrollView幻燈片,每個圖像停留2秒鐘,然後幻燈片到下一張圖片,我該怎麼做?的UIScrollView的slideShow

回答

4

您可以使用UIImageView而不是UIScrollView。

在您的.h文件中:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    int imageId; 
    UIImageView *imageView;  
} 

@property(nonatomic, retain) IBOutlet UIImageView * imageView; 

@end 

在您.m文件:

@implementation ViewController 

#import <QuartzCore/CAAnimation.h> 


#define NUMBER_OF_IMAGES 8; 

@synthesize imageView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    imageId = 0; 
    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(changeImage) userInfo:nil repeats:YES]; 
} 

-(void)changeImage 
{ 
    imageId = imageId + 1; 

    CATransition * trs = [CATransition animation]; 
    trs.duration = 1; 
    [trs setType:kCATransitionPush]; 

    int id = imageId % NUMBER_OF_IMAGES; 
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_%d.jpg", id]]; 
    [imageView.layer addAnimation:trs forKey:kCATransition]; 
} 

@end 

您需要將QuartzCore.framework添加到您的項目。

+0

對不起,我的無知,但是這行'int id = imageId%NUMBER_OF_IMAGES;'是做什麼的?我對'%NUMBER_OF_IMAGES'位特別困惑。它是否對'id'可以設置的值(在這種情況下爲8)設置限制?因爲我會另外使用if語句來檢查'id'是否已經是8 ...不知道您使用的那種符號類型。 – MiguelB

+0

@miamk%運算符計算將imageId除以NUMBER_OF_IMAGES的餘數。然後用這個操作id值總是在0到7之間。 –

0

我不會給你任何代碼(這是你的工作)...

這裏是如何做這樣的事情:

有處理分頁父母UIScrollView的 - 必須實現的委託方法scrollViewDidScroll:

有一個UIPageControl(用於跟蹤的你是什麼網頁上,代碼明智或UI明智)

重要的是變焦: 1.創建的UIScrollView的子類,並添加UIImageV將其視爲子視圖。 2.允許滾動和不分頁。 3.讓這個子類實現viewForZoomingInScrollView的委託方法:(return the UIImageView)