Jor*_*rge 7 objective-c uitableview ios ios8
所有tableViews我的应用程序的不尊重property SeparatorInset- Custom- left = 0上storyBoard.这一切都很好iOS 7,但现在不行了.
当我实现以下两种方法时:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
// iOS 7
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
// iOS 8
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
-(void)viewDidLayoutSubviews
{
// iOS 7
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
// iOS 8
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsZero];
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我只是不明白为什么我不能继续设置这个storyboard更简单.
有什么想法吗?
此代码可能对您有所帮助.包括layoutMargins和separatorInset,以支持iOS版本7,8对于iOS8:
首先配置表视图,如下所示:
if ([self.tableView respondsToSelector:@selector(layoutMargins)]) {
self.tableView.layoutMargins = UIEdgeInsetsZero;
}
Run Code Online (Sandbox Code Playgroud)
然后在您的cellForRowAtIndexPath:方法中,按如下方式配置单元格:
if ([cell respondsToSelector:@selector(layoutMargins)]) {
cell.layoutMargins = UIEdgeInsetsZero;
}
Run Code Online (Sandbox Code Playgroud)
对于版本检查,您可以使用以下内容:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
if ([self respondsToSelector:@selector(setLayoutMargins:)]) {
cell.layoutMargins = UIEdgeInsetsZero;
}
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3962 次 |
| 最近记录: |