我正在尝试将一个右对齐的分段控件添加到`UITableViewCell中:
function find(x){
var length = 0;
while(x > 0){
length++;
x = x - (10**(length-1)) * length * 9;
}
return {length: length, pos: (x % length) + length -1};
}
console.log(find(15));
然后
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "mycell")
// ...
addSegmentedControlToCell(cell)
// ...
这在我的默认设备iPhone 6上运行良好。但是当我在较小宽度的设备上运行此应用程序时,如iPhone 5,以编程方式添加了Segment Control,它接收50%的单元格宽度(cell.frame.size.width / 2)在宽度的50%处看起来要大得多,并且在单元视口下方向右延伸。
这是因为我看到自动布局和约束因为iPhone 5单元格视图被调整大小。所以我试图在我的新段控件中添加一个约束,该控件因app crush而失败。注意,我不是很好地以编程方式添加约束。
func addSegmentedControlToCell(_ cell:UITableViewCell){
let items = ["One","Two"]
let unitControl = UISegmentedControl(items: items)
unitControl.selectedSegmentIndex = 0
let maxWd = cell.frame.size.width
let maxHt = cell.frame.size.height
let padding:CGFloat = 5
unitControl.frame = CGRect(x:maxWd/2, y:padding, width:maxWd/2, height: maxHt-padding*2)
unitControl.addTarget(self, action: #selector(SettingsTableViewController.unitControlValueDidChange(_:)), for: .valueChanged)
cell.addSubview(unitControl)
}
如何正确对齐子视图(段控制)以获得正确的像元大小?
答案 0 :(得分:0)
您可以设置这样的约束:
yourView.rightAnchor.constraint(equalTo: yourCell.rightAnchor, constant: -10).isActive = true
或者:
yourView.heightAnchor.constraint(equalToConstant: 50).isActive = true
但请确保包含此代码:
yourSegmentedControl.translatesAutoresizingMaskIntoConstraints = false
答案 1 :(得分:0)
您可以通过3种方式完成此操作。 1)你在NSLayoutConstraint中写了0.5常量(这是一个错误)。 你需要写常量是1,乘数应该是0.5。 2)或者你应该在Custom Cell的layoutSubviews()方法中更新UISegmentControl的框架。 3)或者你应该在UISegmentControl添加到Cell之后编写cell.layoutSubviews()。