2012-02-08 61 views
0

我想創建一個簡單的應用程序,該應用程序將在第一個啓動屏幕上包含一個居中圖像,而不是在滑動手勢(右側,左側)時更改圖像。嘗試使用UIScrollView顯示圖像

我對此很陌生,所以這裏是我正在尋找的東西http://idevzilla.com/2010/09/16/uiscrollview-a-really-simple-tutorial/

這是在我的控制器實現的代碼,我有:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init]; 

     [myDictionary setObject:@"img1.jpg" forKey:@"http://www.testweb.com"]; 
     [myDictionary setObject:@"img2.jpg" forKey:@"http://www.test2.com"]; 

     UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
     scroll.pagingEnabled = YES; 
     NSInteger numberOfViews = [myDictionary count]; 

     for (NSString* key in myDictionary) { 

       UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:[myDictionary objectForKey:key]]]; 
       CGRect rect = CGRectMake(10.0f, 90.0f, image.size.width, image.size.height); 

       UIImageView * imageView = [[UIImageView alloc] initWithFrame:rect]; 

       [imageView setImage:image]; 

       CGPoint superCenter = CGPointMake([self.view bounds].size.width/2.0, [self.view bounds].size.height/2.0); 

       [imageView setCenter:superCenter]; 
       self.view.backgroundColor = [UIColor whiteColor]; 

       [scroll addSubview:imageView]; 


     } 
     scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height); 


     [self.view addSubview:scroll]; 

} 

我第一次在這裏的問題是,我得到img2我最初的屏幕,而不是img1上。第二個問題是當我向右滑動時,我得到白色屏幕,沒有圖像。任何建議,我錯過了什麼,我可以嘗試/閱讀等?

編輯:

我要做到這一點的「最輕」可能的方式,不使用花哨的畫廊API等只顯示幾個中心的屏幕上真正的小圖像(即200×200像素)的那我可以來回滑動(不要太難)。學習一門新語言時一切都很艱難。

+0

請參考以下鏈接:滾動例 http://developer.apple.com/library/ios/#samplecode/Scrolling/Introduction/Intro.html – user11 2012-08-17 09:08:41

回答

0

在github MWPhotoBrowser上有一個項目,允許您放入一組一次一個查看的圖像。您可以使用滑動手勢從一個圖像滾動到下一個圖像。添加功能也很容易,它應該讓你很好地理解這是如何完成的。還有蘋果公司的PhotoScroller example,它可以讓你直觀地看到如何做同樣的事情,也可以平鋪你的照片。由於您是iOS新手,您可能需要先查看這兩個示例,或者可能只是將它們用作照片查看器。

+0

感謝您的回覆,我已經看着這兩個例子,他們似乎是非常好和複雜的實際圖像畫廊的實施。我並不打算在每個頁面創建圖像庫,但真正簡單的圖像會在點擊時執行某些操作。我只想從頭開始學習 – London 2012-02-08 21:35:59

+0

我用一個完全相同的代碼製作了一個新項目,並將其編譯到iPod iOS 5模擬器中。我把這兩個圖像放在了一起。這是因爲您正在循環每個鍵並將每個圖像添加到滾動中的相同位置。要修復此問題,請添加: int i = 0; //上方for循環 然後將其更改爲: CGPoint superCenter = CGPointMake(([self.view bounds] .size.width/2.0)+ i * [self.view bounds] .size.width,[self.view bounds] .size.height/2.0); 並添加i ++;低於此聲明 – brendan 2012-02-08 22:11:16

0

您的問題很可能是您爲兩個圖像視圖設置了CGRect rect = CGRectMake(10.0f, 90.0f, image.size.width, image.size.height);。這意味着您的UIImageView對象的兩個都放置在完全相同的位置(都位於scrollview的x座標處的10.f處)。當第二個圖像視圖最後添加時,它將覆蓋第一個視圖,並且意味着它右側有空白區域。在10 +第一圖像的寬度

爲了解決這個問題,你可以嘗試像......

- (void)viewDidLoad 
{ 
    //your setup code 

    float xPosition = 10.f; 
    for (NSString* key in myDictionary) { 
     UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:[myDictionary objectForKey:key]]]; 
     CGRect rect = CGRectMake(xPosition, 90.0f, image.size.width, image.size.height); 
     xPosition += image.size.width; 
     //rest of your code... 
    } 
    //rest of your code 
} 

以上將意味着第二視圖是定位在X座標。請注意,我沒有測試過我的答案。

+0

感謝您的迴應,但似乎沒有解決任何問題 – London 2012-02-08 21:34:14

0

首先將圖像放在彼此的頂部。

CGPoint superCenter = CGPointMake([self.view bounds].size.width/2.0, [self.view bounds].size.height/2.0); 
[imageView setCenter:superCenter]; 

就在這裏,您正在設置兩個圖像放置在屏幕的中心。第二件事是你使用NSDictionary並循環訪問鍵。 NSDictionary不是像數組一樣的命令。您將不得不按照特定的順序將密鑰排序。所以Barjavel沒錯,但是跳過了將圖像設置爲中心的事實。試試這個:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSArray *myArray = [[NSArray alloc] initWithObjects:@"img1.jpg", @:image2.jpg", nil]; 
    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    scroll.pagingEnabled = YES; 
    NSInteger numberOfViews = [myArray count]; 
    int xPosition = 0; 
    for (NSString* image in myArray) { 
     UIImage * image = [UIImage imageNamed:image]; 
     CGRect rect = CGRectMake(xPosition, 90.0f, image.size.width, image.size.height); 

     UIImageView * imageView = [[UIImageView alloc] initWithFrame:rect]; 
     [imageView setImage:image]; 
     self.view.backgroundColor = [UIColor whiteColor]; 
     [scroll addSubview:imageView]; 
     xPosition += image.size.width; 
    } 
    scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height); 

    [self.view addSubview:scroll]; 

} 
+0

現在我剛剛意識到我實際上是爲了實現頁面控制,抱歉,現在我看到了這兩個圖片並意識到這一點 – London 2012-02-08 22:10:18