所以我有下面的代碼來創建一個 TableView:
contentView.addSubview(carsTableView)
carsTableView.translatesAutoresizingMaskIntoConstraints = false
carsTableView.backgroundColor = r.darkGray
carsTableView.dataSource = self
carsTableView.isScrollEnabled = false
carsTableView.allowsSelection = true
carsTableView.delegate = self
carsTableView.separatorStyle = UITableViewCell.SeparatorStyle.singleLine
carsTableView.separatorColor = r.lightGray
carsTableView.separatorInset = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
carsTableView.register(CarCell.self, forCellReuseIdentifier: "CarCell")
請注意,我使用單行分隔符。以下代碼是我的單元格“CarCell”的約束
NSLayoutConstraint.activate([
carView.heightAnchor.constraint(equalToConstant: 120),
carView.topAnchor.constraint(equalTo: contentView.topAnchor),
carView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
carView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
carView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
carImageView.leadingAnchor.constraint(equalTo: carView.leadingAnchor, constant: 15),
carImageView.centerYAnchor.constraint(equalTo: carView.centerYAnchor),
carImageView.heightAnchor.constraint(equalToConstant: carImageWidthAndHeight),
carImageView.widthAnchor.constraint(equalToConstant: carImageWidthAndHeight),
carImage.widthAnchor.constraint(equalTo: carImageView.widthAnchor),
carImage.heightAnchor.constraint(equalTo: carImageView.heightAnchor),
carImage.centerYAnchor.constraint(equalTo: carImageView.centerYAnchor),
carImage.centerXAnchor.constraint(equalTo: carImageView.centerXAnchor),
stringStack.leadingAnchor.constraint(equalTo: carImageView.trailingAnchor, constant: 20),
stringStack.centerYAnchor.constraint(equalTo: carView.centerYAnchor),
editButton.trailingAnchor.constraint(equalTo: carView.trailingAnchor, constant: -15),
editButton.centerYAnchor.constraint(equalTo: carView.centerYAnchor),
])
結果是一個完美的 TableView 看起來完全像它應該的那樣。但是,分隔線打破了從 120 到 120.33 的高度限制。我怎樣才能避免這種情況?老實說,我對似乎沒有人遇到類似問題這一事實感到驚訝。我該如何解決?差異顯然不明顯,但約束問題在控制臺中困擾著我。我想讓它運行而不拋出錯誤......
uj5u.com熱心網友回復:
這是一個與 UIKit 布局表格視圖和單元格的方式相關的常見問題。
您會看到120 to 120.3333,但如果您在具有@2x 螢屏比例的設備上運行該應用程式,則訊息將為120.5.
在計算“單像素”線時,@2x 設備只能使用整點或 1/2 點,@3x 設備只能使用整點、1/3 或 2/3 點。
忽略是安全的,但是如果您想擺脫錯誤/警告訊息,請為您的單元格子視圖提供低于所需優先級的底部約束。
例如(我假設您發布的代碼carImageView, carImage, stringStack, editButton都是 的子視圖carView):
let c = carView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
c.priority = .required - 1
NSLayoutConstraint.activate([
// don't use this one
//carView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
// activate the less-than-required bottom constraint
c,
// the rest of your constraints....
carView.heightAnchor.constraint(equalToConstant: 120),
carView.topAnchor.constraint(equalTo: contentView.topAnchor),
carView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
carView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
// and so on....
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463317.html
