2011-01-23 18 views
3

私はわずか数日前にiOSに開発を始めました。 iPhoneライブラリやFacebookアプリケーションのように、アプリケーションに「写真スライダ」を表示する必要があります。 いくつかの調査の後、私は行き詰まった。私の目標は、一連の写真を1つずつ表示し、ユーザーが右から左にスライドさせることです:-)iPhoneのスライドショー写真/画像(写真ライブラリやFacebookアプリなど)?

誰かが例を持っているのですか?

ありがとうございます。

答えて

7

まあThree20が有名ですが、私はそれを使用してからあなたを思いとどまらうを構築します。必要なのは、写真スライダーだけで、Three20フレームワーク全体をプロジェクトに入れ、URLベースのナビゲーション機能がどのように機能するかを把握しようとするのは本当に苦しいことです。

これは、より良い選択肢です。https://github.com/enormego/PhotoViewerです。これは、写真スライダーと対応するイメージキャッシュのスタンドアロンの実装です。コードの仕組みについては、著者のブログhttp://developers.enormego.com/で詳しく読むことができます。

+1

ええ、私はThree20について同じことを言うつもりでした。 URLベースのナビゲーションは本当の苦痛です。 – timothy5216

+0

ありがとうございます。非常に便利です – Hugo

+0

これらは素晴らしいアプリの素晴らしい例ですが、それを行う方法のいくつかの段階的な説明があればより便利です。多分ビデオやテキストのチュートリアルですか?それらの偉大な情報源に感謝します。 –

0

あなたがそれをチェックアウトしたい場合はThree20で「写真のスライダーは」あります - https://github.com/facebook/three20/tree/master/samples/TTCatalogを - ちょうどソースをダウンロードしTTCatalog

+0

ありがとうございます。役に立った – Hugo

+0

このプロジェクトのサポートは終了しましたので、時間を無駄にしません。 – PAC

5

画像スライドショーのサンプルコードを以下に使用できます。ここでは 'scr'はscrollviewオブジェクトです。 yhpets応答の

NSMutableArray *imgs=[[NSMutableArray alloc]init]; 
         // arrayWithObjects:[UIImage @"abc1.jpg"],[UIImage @"abc2.jpg"],[UIImage @"abc3.jpg"], [[email protected]"abc4.jpg"], 
//    [ UIImage @"abc5.jpg"],nil]; 

         [imgs addObject:[UIImage imageNamed:@"abc1.jpg"]]; 
         [imgs addObject:[UIImage imageNamed:@"abc2.jpg"]]; 
         [imgs addObject:[UIImage imageNamed:@"abc3.jpg"]]; 
         [imgs addObject:[UIImage imageNamed:@"abc4.jpg"]]; 
         [imgs addObject:[UIImage imageNamed:@"abc5.jpg"]]; 
for(int i=0;i<imgs.count;i++) 
{ 
    CGRect frame; 
    frame.origin.x=self.scr.frame.size.width *i; 
    frame.origin.y=0; 
    frame.size=self.scr.frame.size; 
    UIImageView *subimg=[[UIImageView alloc]initWithFrame:frame]; 
    subimg.image=[imgs objectAtIndex:i]; 
    [self.scr addSubview:subimg]; 
    [subimg release]; 
    self.scr.contentSize=CGSizeMake(self.scr.frame.size.width*imgs.count, self.scr.frame.size.height); 

} 
+0

これは素晴らしいことですが、ストーリーボードビューコントローラで「オートレイアウトを使用」をオフにして「ページングを有効にする」をオンにしたい人もいます。 contentSizeを設定する最後の行は、一回だけ必要なのでforループの外側に配置する必要があります。 'self.scr.contentSize = CGSizeMake(self.scr.frame.size.width * imgs.count、self.scr.frame.size.height);'私はこの答えが気に入っていますが、オリエンテーションの変更ができるように拡大したい、もっと私の答えを見てください。 (ここにコードを入れにくい)。 –

+0

これは素晴らしいです。しかし、どのように弾力性を加えてスクロールすると画像が停止するようにすることができますか?アプリストアのように – Viper

1

ビルは、これはあなたのViewController.hファイルで

...向きが各ImageViewのにタグを適用し、各ImageViewのを参照して、デバイスを回転させたときにサイズを変更するためにそれらを使用することによって、あまりにも変化しサポートしていますあなたは

@interface ViewController : UIViewController{ 
    NSMutableArray *imgs; 
    IBOutlet UIScrollView *scr; 
} 
@property (strong, nonatomic) IBOutlet UIScrollView *scr; 

...あなたの配列とScrollViewを設定する必要がありますそして、あなたのViewController.mにあなたはdidRotateFromInterfaceOrientationのために耳を傾け、新しい画面に合わせてImageViewsのサイズを変更する必要があります。私たちが縦長か横長かに応じてscreenWidthとscreenHeight変数を設定し、これらを使って各画像ビューとスクロールビューのサイズを変更する必要があります。

@implementation ViewController 
@synthesize scr; 

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
     CGRect screenRect = [[UIScreen mainScreen] bounds]; 
     CGFloat screenWidth = screenRect.size.width; 
     CGFloat screenHeight = screenRect.size.height; 
    if ((self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)||(self.interfaceOrientation == UIInterfaceOrientationPortrait)){ 
//screenWidth and screenHeight are correctly assigned to the actual width and height 
    }else{ 
     screenHeight = screenRect.size.width; 
     screenWidth = screenRect.size.height; 
     screenRect.size.width = screenWidth; 
     screenRect.size.height = screenHeight; 
    } 
    NSLog(@"see it's right now= (%f,%f)",screenWidth,screenHeight); 
    self.scr.contentSize=CGSizeMake(screenWidth*imgs.count, screenHeight); 
    for(int i=0;i<imgs.count;i++){ 
     UIImageView *targetIV = (UIImageView*)[self.view viewWithTag:(i+1)]; 
     CGRect frame; 
     frame.origin.x=screenWidth *i; 
     frame.origin.y=0; 
     frame.size=CGSizeMake(screenWidth, screenHeight); 
     targetIV.frame = frame; 
    } 
}/////////////////////////////////////////////////////////////////////////// 
- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    imgs=[[NSMutableArray alloc]init]; 
    [imgs addObject:[UIImage imageNamed:@"1001.png"]]; 
    [imgs addObject:[UIImage imageNamed:@"1002.png"]]; 
    [imgs addObject:[UIImage imageNamed:@"1003.png"]]; 
    [imgs addObject:[UIImage imageNamed:@"1004.png"]]; 
    for(int i=0;i<imgs.count;i++){ 
     CGRect frame; 
     frame.origin.x=self.scr.frame.size.width *i; 
     frame.origin.y=0; 
     frame.size=self.scr.frame.size; 
     UIImageView *subimg=[[UIImageView alloc]initWithFrame:frame]; 
     subimg.image=[imgs objectAtIndex:i]; 
     subimg.tag = (i+1); 
     subimg.contentMode = UIViewContentModeScaleAspectFit; 
     [self.scr addSubview:subimg]; 
    } 
    self.scr.contentSize=CGSizeMake(self.scr.frame.size.width*imgs.count, self.scr.frame.size.height); 
} 
関連する問題