2011-08-20 50 views
0

我在定製的UITableViewCell中水平對齊200x200圖像時遇到問題。我已經將UITableViewDelegate中的tableViewheightForRowAtIndexPath設置爲適當的值,但這不會將我的圖像水平居中,它只是垂直居中(比我猜想的要好)。我也嘗試在我的自定義單元格中更改的layoutSubviews的值,但這似乎沒有任何影響。我甚至把它評論出來,放在[super layoutSubviews];之前,玩過框架的值,但我一直得到相同的結果。如何在UITableViewCell中將UIImageView水平居中?

任何人都可以幫助我嗎?我應該寫什麼代碼才能達到這樣的效果? 謝謝。

+0

是否使用了筆尖,使您的自定義的UITableViewCell?如果不是,使用筆尖很容易實現。 – msgambel

+0

無論如何,我正在做所有事情,因爲我需要動態地做事情。有任何想法嗎?如果不是,你能告訴我如何在IB做這件事,那麼我可能知道是什麼原因造成的。謝謝 – Nabou

+0

在IB中,您只需將UIImageView放置在單元格的中心,然後將它始終顯示在那裏。如果你想以編程的方式來做,也許玩的界限? – msgambel

回答

1

你會嘗試這個代碼它的幫助你

 You need to subclass UITableViewCell and override layoutSubviews, as follows: 

    - (void) layoutSubviews 
    { 
     [super layoutSubviews]; 

     self.imageView.frame = CGRectMake(10, 10, 50, 50); // your positioning here 
    } 

    In your cellForRowAtIndexPath: method, be sure to return an instance of your new cell type. 
+0

這工作!我試圖改變我添加的UIImageView的框架,這就是爲什麼它不起作用。我還發現改變contentView的邊界達到了同樣的效果,但我想這是因爲我只有一個元素:圖像。謝謝。 – Nabou

+0

工作得很好。要做一個一步一步的教程,並在這裏發佈鏈接,因爲這個問題非常惱火 – voghDev

0
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

UIImageView *imgView; 
if(cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 

    imgView = [[UIImageView alloc] initWithFrame:(100,0,100,62)]; 
    [imgView setImage:[UIImage imageNamed:@"img.png"]]; 
    imgView.tag = 55; 
    [cell.contentView addSubview:imgView]; 
    [imgView release]; 
} 
else 
{ 
     imgView = (id)[cell.contentView viewWithTag:55]; 
}