2013-01-11 23 views
1

我想將UIImageView居中放在我的UITableView中的一個單元格中。爲此,我必須創建UITableViewCell的子類,並在-(void)layoutSubviews中更新imageView的位置。我已經嘗試了幾種方法,基本上是這樣的:修復了UITableViewCells中ImageView上的填充問題?

-(void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    self.imageView.center = self.center; 
} 

這並不按照我希望的方式工作。似乎有一個固定的填充imageView或類似的東西,造成的imageView的中心,這實際上是下降到細胞的實際中心的權利。 如果我寫了類似self.imageView.center.x = self.center.x;的東西,圖像的高度居中,但距離右邊太遠。所以我想我必須寫一些像self.imageView.center.x = self.center.x - someValue;這樣的東西纔可以,如果填充是問題。我在哪裏可以找到這個填充,並且它會適用於不同的設備?或者,也許沒有填充,這是由別的東西引起的?

順便說一句,這是一個分組的tableView,如果能有什麼用它做..

而且,的UIImageView的高度和寬度應小於電池的,所以我不我認爲這是推動它的原因。

我已經臨時爲我的圖片添加了一個邊框,只是爲了看看它有多少關閉,我認爲這非常令人不安。您在圖片中看到的代碼是添加到自定義單元類中的唯一代碼。

這就是我得到: Result

+0

是否將圖像視圖添加到表格單元格的「contentView」? –

+0

@AndrewTetlaw我沒有添加任何東西,單元格默認有一個imageView。 Self.imageView是可訪問的,我可以移動它,只是它不會移動到我告訴它的位置,就好像是一個20px的填充或其他東西.. – Sti

+0

對不起,我想如果您使用的是自定義單元格你正在做一些自定聽起來你可能需要一個自定義單元格,你可以在界面構建器中構建它,並將圖像視圖放在任何你喜歡的地方。 –

回答

2

順便說一句,這是一個組合的tableView,如果能有什麼用它做..

YUP!

分組表視圖有填充 - 或邊距 - 不管它是什麼,這是不方便的。我不在這裏發佈代碼答案,因爲有許多獨特的方法可以解決您的問題,但知道UITableView對於分組表格視圖確實是這樣做的。這裏還有其他一些帖子,可以幫助您找到處理分組表格視圖造成的間距的方法。祝你好運!

+0

真的嗎?!你知道一種以編程方式查找填充的方法嗎?所以我可以採用ish:'self.imageView.center = self.contentView.center-padding;'我討厭使用常量,所以我寧願避免編寫'contentView.center-20.0;' – Sti

+0

我正在談論這裏填充每個單元格的內部,而不是tableView本身。如果您仍然認爲有填充,我發現單元格的'self.contentView.center'不包含它真的很奇怪。比如,中心已設置,然後他們添加填充。對我來說沒有意義.. – Sti

+0

我同意最好找到一種以編程方式執行此操作的方法,但Apple沒有證明這麼做的簡單方法。這樣做的最好的嘗試,我看到仍然依賴於常量或其他醜陋的解決方案。請記住,這個保證金可能會因不同設備,不同方向等而有所不同。因此,無論您決定如何做,請在設計應用程序時牢記這一點。如果你只是設計說肖像iPhone應用程序,你可以安全地堅持一個簡單的常數,但更多的設備和方向你支持更復雜這成爲。 – ozz

1

這爲我工作:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    self.imageView.center = self.contentView.center; 
    self.imageView.layer.borderColor = [UIColor blackColor].CGColor; 
    self.imageView.layer.borderWidth = 2.0; 

    self.contentView.layer.borderColor = [UIColor greenColor].CGColor; 
    self.contentView.layer.borderWidth = 2.0; 
} 

這是結果:

enter image description here

另外,您可以利用backgroundView的:

UIView *bg = [[UIView alloc] initWithFrame:self.frame]; 
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]]; 

[bg addSubview:img]; 
img.center = bg.center; 

self.backgroundView = bg; 
+0

它不適合我..我現在已經添加一個邊框到imageView,看看它有多少,我會說它的右側約20px的空間,和左邊60px ..它看起來好像大概是1px,但這可能是正確的。 – Sti

+0

表格單元格中的其他內容?一些更多的細節能夠幫助你也可以粘貼一個鏈接到圖像文件? –

+0

鏈接?我剛剛拿到它,直接在這裏上傳,不知道是否有鏈接。雖然沒有太多可以看到,只是imageView顯然是正確的方式。 – Sti