2013-09-24 125 views
10

我有一個UITableView,在ios6中,我的自定義單元完全拉伸到屏幕的左側和右側。所以我手機屏幕左側的方形圖像很難看。ios7中的UITableViewCell現在在左側和右側有空白

但是,現在在ios7中,左側出現一個小間隙,因此圖像現在偏離側邊,並且與單元格內的文本略有重疊。

這似乎也發生在我現在正在ios7中查看的其他應用程序中 - 所有的應用程序在左側都有空白,也許在右側。

根據界面生成器我的自定義單元格被設置爲320的大小 - ios 7沒有改變它有嗎?

回答

2

添加圖像到cell.contentView解決了這個問題:

[cell.contentView addSubview:imgView];

這種方式,你甚至不必介意separatorInset財產。

23

iOS7增加了一個separatorInset屬性。

嘗試添加以下內容到UITableViewController

if ([self.tableView respondsToSelector:@selector(separatorInset)]) { 
    [self.tableView setSeparatorInset:UIEdgeInsetsZero]; 
} 
+0

我曾經嘗試這樣做沒有成功。我的表格視圖是由界面構建器製作的,我嘗試將代碼插入表視圖實現中的各個位置,但沒有成功(viewdidload,viewwillappear等)。我真的不想進入子類化,如果我可以幫助它,所以我錯過了你的方法的東西? – skeg0

+1

如果您正在使用界面構建器,然後選擇表格視圖,進入屬性檢查器並在標籤爲「分隔符插入」的表格視圖中找到選擇,將下拉列表從默認更改爲自定義,然後將左側值從15更改爲0. – loydbrahn

+0

這看起來會改變每個部分的插頁的標題,但不會在表格單元格本身內。 – skeg0

1

在C#中使用Xamarin/MonoTouch的那些

tableView.SeparatorInset = UIEdgeInsets.Zero; 
+1

UIEdgeInsetsZero – Jasmeet

+0

我不確定那個評論意味着什麼,但我相信我發佈的代碼是正確的,因爲在Xamarin中這些屬性被轉換爲字段,因此它更易於使用。 Documenetation可以在http://docs.go-mono.com/monodoc.ashx?link=T%3aMonoTouch.UIKit.UIEdgeInsets%2f* – Webmonger

+1

我認爲上面的評論沒有意識到mono是什麼。 'tableView.separatorInset = UIEdgeInsetsZero;'爲obj-c'tableView.SeparatorInset = UIEdgeInsets.Zero;'爲mono! –

3

我寧願讓自己的分隔符。感覺比使用tableview設置掙扎更簡單。只需將分隔符設置爲none,子類化您的單元並在init中執行此操作。

-(id)initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if(self){ 

     UIView *seperator = [[UIView alloc] init]; 
     [seperator setBackgroundColor:[UIColor blackColor]]; 
     seperator.frame = CGRectMake(0, self.bounds.size.height-1, self.bounds.size.width, 1); 
     [seperator setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth]; 
     [self.contentView addSubview:seperator]; 

    } 
    return self; 
} 
+0

問題是,在視網膜上顯示分隔符將是2px厚,而UITableView繪製的將仍然是1px厚。我通過定義區分屏幕分辨率和繪製0.5px或1px行的邏輯來繞過這個限制,但這根本不是未來的保證。 – user3099609

3

這是爲我工作完美:

-(void)viewDidLayoutSubviews 
{ 
    if ([self.Video_TableVIEW respondsToSelector:@selector(setSeparatorInset:)]) { 
     [self.Video_TableVIEW setSeparatorInset:UIEdgeInsetsZero]; 
    } 

    if ([self.Video_TableVIEW respondsToSelector:@selector(setLayoutMargins:)]) { 
     [self.Video_TableVIEW setLayoutMargins:UIEdgeInsetsZero]; 
    } 
} 

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { 
     [cell setSeparatorInset:UIEdgeInsetsZero]; 
    } 

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { 
     [cell setLayoutMargins:UIEdgeInsetsZero]; 
    } 
} 
0
override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.cellLayoutMarginsFollowReadableWidth = false 
}