我有一个 UITableView,在 ios6 中,我的自定义单元格完全伸展到屏幕的左侧和右侧。所以我在牢房左侧的方形图像很难贴在手机屏幕上。
但是,现在在 ios7 中,左侧出现了一个小间隙,因此图像现在远离侧面并与单元格内的文本略微重叠。
这似乎也发生在我现在在 ios7 中查看的其他应用程序中——所有应用程序的左侧和右侧都有一个间隙。
根据 Interface Builder,我的自定义单元格设置为 320 的大小 - ios 7 没有改变这个有吗?
我有一个 UITableView,在 ios6 中,我的自定义单元格完全伸展到屏幕的左侧和右侧。所以我在牢房左侧的方形图像很难贴在手机屏幕上。
但是,现在在 ios7 中,左侧出现了一个小间隙,因此图像现在远离侧面并与单元格内的文本略微重叠。
这似乎也发生在我现在在 ios7 中查看的其他应用程序中——所有应用程序的左侧和右侧都有一个间隙。
根据 Interface Builder,我的自定义单元格设置为 320 的大小 - ios 7 没有改变这个有吗?
iOS7 增加了一个separatorInset
属性。
尝试将此添加到您的UITableViewController
:
if ([self.tableView respondsToSelector:@selector(separatorInset)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
这对我来说很完美:
-(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];
}
}
我更喜欢自己制作分隔符。感觉比使用 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;
}
将图像添加到cell.contentView
修复问题:
[cell.contentView addSubview:imgView];
这样你甚至不必介意separatorInset
财产。
对于那些在 c# 中使用 Xamarin/MonoTouch 的人
tableView.SeparatorInset = UIEdgeInsets.Zero;
override func viewDidLoad() {
super.viewDidLoad()
tableView.cellLayoutMarginsFollowReadableWidth = false
}