gpt4 book ai didi

ios - 如何使 UITableView 分隔符插图从屏幕边缘移开?

转载 作者:搜寻专家 更新时间:2023-11-01 06:20:15 26 4
gpt4 key购买 nike

class RoomNewTableViewCell: UITableViewCell {

var row:Int?
var room: Room?{
didSet{
updateUI() //this is when render is called
}
}

override func awakeFromNib() {
super.awakeFromNib()
self.layoutMargins = UIEdgeInsetsZero
self.separatorInset = UIEdgeInsetsMake(0, -15, 0, 0)
}



override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)

}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func updateUI(){
println("Updating UI")
let test = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
test.backgroundColor = UIColor.greenColor()
self.backgroundColor = UIColor.blueColor()
self.addSubview(test)
}

}

这就是我创建 tableView 的方式:

    //Draw Table
self.roomsTableView.delegate = self
self.roomsTableView.dataSource = self
self.roomsTableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine
self.roomsTableView.separatorColor = UIColor(hex: 0xededed)
let tableViewStartY = CGFloat(0) //used to be 20.0
let extraPaddingToAlignTable = CGFloat(50)
self.roomsTableView.frame = CGRectMake(0, tableViewStartY, screenWidth, CGRectGetMinY(self.tabBarController!.tabBar.frame) + extraPaddingToAlignTable)
self.roomsTableView.addSubview(self.refreshControl)
self.roomsTableView.tableFooterView = UIView(frame: CGRectZero)


self.roomsTableView.rowHeight = CGFloat(100)
self.roomsTableView.clipsToBounds = true
self.roomsTableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
self.roomsTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
self.roomsTableView.registerClass(RoomNewTableViewCell.self, forCellReuseIdentifier: "newCell")
self.view.addSubview(self.roomsTableView)

我试过为表格和单元格设置 separatorInset,但似乎无法正常工作。

enter image description here

最佳答案

从 iOS 8.0 开始,苹果为 UITableViewCell 和 UITableView 添加了 layoutMargins 属性。

因此,您可以在 TableView 的 willDisplayCell: 委托(delegate)方法中将 layoutMargin 设置为零。这段代码只是将 tableview layoutMargin 和 cell layoutMargin 设置为 UIEdgeInsetsZero

这也适用于 iOS 7.0。

试试这个可能对你有帮助。

swift

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

if(tableView.respondsToSelector("setSeparatorInset:")){

tableView.separatorInset = UIEdgeInsetsZero
}

if(tableView.respondsToSelector("setLayoutMargins:")){

tableView.layoutMargins = UIEdgeInsetsZero
}

if(cell.respondsToSelector("setLayoutMargins:")){

cell.layoutMargins = UIEdgeInsetsZero
}

}

objective-c

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}

if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}

对于 iOS 9.0,您必须将 cellLayoutMarginsFollowReadableWidth 设置为 NO

objective-c

- (void)viewDidLoad {
[super viewDidLoad];

//For iOS 9 and Above

if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
self.tableView.cellLayoutMarginsFollowReadableWidth = NO;
}
}

swift

override func viewDidLoad() {
super.viewDidLoad()

//For iOS 9 and Above
if #available(iOS 9, *) {
tableView.cellLayoutMarginsFollowReadableWidth = false
}
}

您也可以从 Storyboard 中设置此值。

打开 Storyboard 并转到 TableView Cell 的属性检查器。

Separator 字段的类型更改为 Custom Insets 并将 Left 的值更改为 0

请找到下图。

enter image description here

关于ios - 如何使 UITableView 分隔符插图从屏幕边缘移开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34959397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com