2016-07-23 180 views
6

我正在學習iOS上的UITableview並學習在線課程。我得到的表格顯示得很好,但我細胞上的圖像並不全是左邊的(而教師的圖像)。這是有問題的電池的截圖:單元格上的圖像不是所有的左邊

enter image description here

我不希望這樣的差距,我希望圖像就在小區的beggining定位,一路向左。我已經做了一些研究,看起來蘋果公司已經改變了ios6和ios7之間的單元格的默認外觀,以便現在單元格中的圖像顯示出左側有一點空隙。爲了擺脫它,我嘗試了UIEdgeInsets:

[tableView setSeparatorInset:UIEdgeInsetsZero]; 

並且這不起作用。我也嘗試過這種方法:

cell.imageView.frame = CGRectMake(0, 0, 50, 55); 

沒有任何反應。那麼我將如何去做呢?謝謝

編輯------------------------------------------- -------------------------------------------------- ----------------------------------

還沒有找到答案。這裏發佈的解決方案不起作用。我發現這段代碼:

self.tableView.contentInset = UIEdgeInsetsMake(0, -50, 0, 0); 

其除了完全弄不懂(?作爲影響應該是y中的參數),我認爲通過使單元上的一路圖像顯示在左側解決的問題,直到我意識到它只是將整個視圖移到左邊(正如我應該預期的那樣),在屏幕的另一側留下相同的空隙。我想要的只是讓單元格中的圖像一直出現在單元格左側,就像以前的ios一樣。由於

+0

使用CustomeCell並在Custom Cell中設置圖像,標籤。 – user3182143

+0

我認爲你的表格處於編輯模式 – PinkeshGjr

+5

你可以請你發表你如何製作tableviewcell的代碼。即如何在圖像中添加圖像。 –

回答

0

這是因爲默認表的內容從左邊偏移量是15,你應該爲0 改變它見這一次,你的想法Remove empty space before cells in UITableView

+2

你也應該把代碼放在你自己的答案中,而不是隻鏈接到別人的代碼。 – kabiroberai

+0

我已經嘗試了帖子的建議,但self.automaticallyAdjustsScrollViewInsets = NO;不做我想要的。事實上它使情況變得更糟,因爲現在桌子隱藏在頂部導航欄後面。我不希望整個表的行爲不同,我所需要的是單元格內的圖像從0開始。self.tableView.contentOffset = CGPointMake(0,40);也不起作用。我很驚訝這是多麼困難,什麼時候它應該是一行代碼。 – Paul

+0

Try self.tableView.contentOffset = CGPointMake(0,0);並在您的cellForRowIndexPath方法中寫入這些行 cell.separatorInset = UIEdgeInsetsZero; [cell setLayoutMargins:UIEdgeInsetsZero]; cell.preservesSuperviewLayoutMargins = NO; 它應該像你想要的那樣工作。 –

0

如果您創建自定義單元格。 UITableViewCell擁有所有者imageView。更改單元格中的圖像標題。 如果您使用默認單元格,請使用帶有約束的自定義單元格Leading space = 0.

0

最好不要使用單元格的默認imageView。從目標庫中拖放UIImageView,創建一個自定義表格視圖單元格(UITableViewCell的Child類),然後創建和拖動圖像視圖的出口。

0

UITableViewCell中的間距是因爲shouldIndentWhileEditingRowAtIndexPath方法UITableViewDelegate返回的默認TRUE

我能夠通過下面的情景重現您的問題problem

UITableView的是編輯模式:

self.tableView.editing = true 

而且你已經實現了:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
      editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleNone; 
} 

要糾正你的代碼: 如果你不想設置編輯風格,那麼你可以關閉編輯模式由

self.tableView.editing = false 

並刪除editingStyleForRowAtIndexPath

否則,如果您需要編輯模式,然後設置適當的編輯樣式(UITableViewCellEditingStyleDeleteUITableViewCellEditingStyleInsert)或簡單地關閉縮進。

- (BOOL)tableView:(UITableView *)tableView 
shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { 
return FALSE; 
} 
0

您必須通過添加一個新類作爲UITableViewCell的子類來創建自定義單元格。那麼你可以使用自動佈局和約束來設計單元來解決問題。

0

還有另一種具體的方法來創建子類uitableviewcell(自定義類)來實現這一點。

要遵循的步驟

  • 創建的UITableViewCell的類的子類。 .h文件中的
  • 創建UI組件的屬性和出口。
  • 轉到故事板並在桌面視圖中添加表格視圖單元格。
  • 現在添加UI組件,如:imageview或按鈕等,並根據設置x,y值。
  • 使用身份檢查器使自定義單元格的類成爲您的類名稱請參閱圖像。 enter image description here
  • 連接UI組件的所有插座。

使用下面的代碼的UITableView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSString *MyIdentifier = @"uniqueIdentifire"; 
    yourCustomClassForCell *cell = (yourCustomClassForCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    if (cell == nil){ 
     cell = [[yourCustomClassForCell alloc] initWithStyle:UITableViewCellStyleDefault 
               reuseIdentifier:MyIdentifier]; 

    } 

    cell.imageView.image = [imageAry objectAtIndex:indexPath.row]; 
} 

不要忘記用故事板屬性檢查uniqueIdentifire選擇你的細胞identifire財產給identifire看到圖像。

enter image description here

您也可以通過只給細胞之間的一些垂直空間來添加此下面的代碼裏面customeCellClass(此方法只)。

- (void)setFrame:(CGRect)frame {  // method to insert gap between table view cell 
    frame.origin.y += 6; 
    frame.size.height -= 2 * 6; 
    [super setFrame:frame]; 
} 
-1

您不能真正改變uitableviewcell的內置子視圖的框架,如imageview,accessoryview。但是如果你創建了一個自定義的tableviewcell類(即使你沒有添加任何其他的子元素),你可以通過重寫UITableViewCell中的layoutSubviews方法來改變內置的imageview框架。我已經嘗試過,它的工作原理。

#import "TableViewCell.h" 

@implementation TableViewCell 

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    // Initialization code 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

-(void) layoutSubviews{ 
    [super layoutSubviews]; 
    CGRect frame = self.imageView.frame; 
    frame.origin.x = 0; 
    self.imageView.frame = frame; 
} 

@end 
相關問題