2011-11-11 258 views
0

我從Web服務動態加載圖像。這些圖像將被加載(與[UIImage imageWithData:data];),並使用setImage消息限制以編程方式設置的UIImage的大小

被放置在一個在UIImageView在我的自定義UITableViewCell。我在界面生成器中給了imageView 27和19的寬度和高度,並告訴他「看上去適合」(嘗試所有其他的順便說一句),但圖像並沒有這樣做。它只是縮放(我認爲)填充視圖單元格。我嘗試了很多東西,比如調整圖像大小(工作,但我可以計算像素在我的視網膜顯示),調整UIImageView ...但我只是不明白...有人知道我在做什麼錯了?

改變細胞中的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *MyIdentifier = @"MyIdentifier"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"NewsTableViewCell" owner:self options:nil]; 
     cell = self.tableCell; 
     self.tableCell = nil; 
    } 

    viArticle *article = [self.viData.articles objectAtIndex:indexPath.row]; 

    UILabel *label; 

    label = (UILabel *)[cell viewWithTag:1]; 
    label.text = article.title; 

    label = (UILabel *)[cell viewWithTag:2]; 
    label.text = [NSString stringWithFormat:@"%@ %@", article.time, article.type]; 

    if (article.image != nil) { 
     UIImageView *imageView; 
     imageView = (UIImageView *)[cell viewWithTag:0]; 
     [imageView setImage:article.image]; 

    } 

    return cell; 
} 

這是視圖:

Custom tableView cell

而且設置:

enter image description here

+0

你的問題在這裏還不清楚。您已經指示它使用「Aspect Fit」,並且縮放圖像以填充視圖...這正是你要求它做的。也許你是針對錯誤的觀點? –

+0

它應該在「UIImageView」內部的「方面適合」,但它在它之外......並且我不知道爲什麼。如果我在IB中添加圖像,它會正確顯示。 –

+0

我們需要看到您使用的代碼。 –

回答

0

我剛剛在今天早些時候發佈了一個「解決方案」,但似乎有效,但是這是一個錯誤的假設。在詢問IRC後,我發現真實的解決方案。我正在使用tag 0,那個不應該使用。將其更改爲更高的值確實解決了我的問題。有時它可以很容易。 :)

謝謝你們。

0

如果你想調整UIImageView你可以使用框架屬性。

假設您有一個UIImageView在.h文件中聲明(讓我們取UIImageView *myImage;),它也鏈接到接口生成器。 你有合成它的.m類等

那麼當你想調整的UIImageView,使用

myImage.frame = CGRect(x,y,width,height); 

注:通過宣佈在代碼中的寬度和高度,寬度和高度聲明IB將被覆蓋。

然後不要忘記將它添加到子視圖,

i.e [self.view addSubview:myImage]; 

及其完成後,你可以看到的變化。

+0

這是我嘗試過的一件事,它似乎沒有改變任何東西。但爲什麼我應該將其添加到子視圖?它是建立在IB上的,所以它已經在那裏了? –

+0

正如你正在定義一個新的框架,你有它的子視圖。 –

+0

@GuidoH你可以試試它,因爲它對我有用。如果它也適用於您,請將其標記爲答案。 –

0

如果不勾選「Autoresize Subviews」,會發生什麼情況?

+0

不會改變任何東西。當我在這裏看到照片時試過了。 –

0

@GuidoH嘿對不起,對於最近的答覆.. 這裏是代碼,將圖像添加到表視圖單元格。

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
     static NSString *SimpleTableIdentifier = @" SimpleTableIdentifier "; 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; 
     if (cell == nil) 
     { 
      cell = [[[UITableViewCell alloc] 
      initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease]; 
     } 

     UIImage *image = [UIImage imageNamed:@"star.png"]; 
     cell.imageView.image = image; 
     NSUInteger row = [indexPath row]; 
     cell.textLabel.text = [listData objectAtIndex:row]; 
     return cell; 
} 

//use this delegate it will increase the row size and thus your imagesize will get increased too. 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
     return 80; //value can be changed 
} 

我建議縮放圖像肯定會導致您的應用程序的性能下降。

+0

感謝您的回答。但那並不能解決我的問題。我可以將圖像添加到單元格中,但它沒有以正確的大小顯示。我從URL中獲取圖像,該圖像返回圖像。但是,當我將它添加到圖像視圖中時,即使將圖像服務器端的大小調整爲正確大小,它也不能正確顯示。我想這個問題可能是因爲我在視網膜顯示器上使用它,而IB不使用這種尺寸。 –

相關問題