2011-06-03 146 views
0

我試圖創建一個圖像庫存儲在資源包中的圖像。我存儲我的圖像在NSMutable陣列我想要的是一個圖像庫....但輸出是非常不同於我期望的笏。下面的代碼工作完全fine.to更具體的葷你們幫我下面是代碼...創建一個圖像庫

enter image description here

_images =[NSMutableArray arrayWithObject:[UIImage imageNamed:@"logo1.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo2.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo3.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo4.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo5.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo6.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo7.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo8.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo9.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo10.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo11.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo12.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo13.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo14.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo15.png"]]; 
[_images addObject:[UIImage imageNamed:@"logo16.png"]]; 

NSLog(@"ha ha ha:%d",_images.count); 



UIScrollView *view = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
int row=0; 
int coloumn=0; 
for (int i=0; i< _images.count; i++) 
{ 
    UIImage *thumb=[_images objectAtIndex:i]; 
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame=CGRectMake(coloumn*100+24, row*80+30, 64, 64); 
    [button setImage:thumb forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    button.tag=i; 
    [view addSubview:button]; 
    if (coloumn==2) { 
     coloumn==0; 
     row++; 
    }else { 
     coloumn++; 
    } 

} 

[view setContentSize:CGSizeMake(320, (row+1)*80+10)]; 
self.view=view; 
[view release]; 

回答

0

使用three20庫

iPhone SDK: Creating a Photo Gallery With Three20

enter image description here

編輯:

你的代碼是除了在錯誤的聲明優秀:

coloumn==0; 

這是你的colomn始終指向第二coloumn的原因。

因此將其更改爲coloumn = 0;

+0

我試過使用three20 ...它不與標籤欄應用程序集成..並且非常複雜 – kingston 2011-06-03 07:07:46

+0

@kingston:檢查我更新的答案。 – Jhaliya 2011-06-03 07:17:24

2

與您的代碼的問題是在這裏:

if (coloumn==2) { 
    coloumn==0; //-- ERROR! 
    row++; 

這應該是:使用

coloumn=0; //-- correct! 

==而不是=

+0

@sergio:沒有冒犯的傢伙,在看到我6分鐘前更新的答案後(現在),您剛剛通過添加一些文本發佈了答案,這不是很好,我們需要維護並遵循一些隱含的規則。 – Jhaliya 2011-06-03 07:26:01

+0

感謝男人......它的工作很好 – kingston 2011-06-03 07:29:14

+0

@Jhaliya:我真的不明白你怎麼說......沒有冒犯,但請放心,這不是真的。 – sergio 2011-06-03 07:32:31

0

這工作得很好,但是你必須在更改大小時對代碼進行一些調整。複製並粘貼到您的Viewdidload;確保你有一個UIScrollview IB已經設置鏈接名稱scrollView

int row = 0; 
int colomn = 0; 
int width = 79; 
int height = 79; 
int offset = 1; 
// int diff = width * 0.5; 
CGRect rect; 

for (int i = 0; i < 45; i++) { 

    if(i == 0){ 

     colomn = 0; 

    }else{ 

     colomn += width + offset; 

    }; 

    if(colomn >= ((int)scrollView.frame.size.width) - width){ 

     colomn = 0; 
     row += height + offset; 

    } 

     rect = CGRectMake(colomn, row, width, height); 


    UIView *view = [[UIView alloc] initWithFrame:rect]; 
    [view setBackgroundColor:[UIColor redColor]]; 
    [scrollView addSubview:view]; 

} 

[scrollView setContentSize:CGSizeMake(320, row+height)]; 
+0

更好的解決方案是基於視圖約束對網格進行建模,以便應用程序可以根據更改進行調整,允許在滾動視圖之外進行分頁,以及操縱網格對象本身而不是硬編碼位置並將它們設置在視圖中。一旦這些圖像設置在滾動視圖中,您無法對事件做出響應,而無需重複所有相同的邏輯來進行點擊測試,並且您沒有對照片的對象標識。 – 2012-09-18 05:41:14

+0

請你可以編寫代碼來達到這個效果嗎? – codebender 2012-09-27 23:49:04