我想做同样的事情,以从左到右放置UITableViewCell
元素。
var cell = tableView.dequeueReusableCell(withIdentifier: "Starred")
if cell == nil {
cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Starred")
}
return cell!
答案 0 :(得分:0)
在这种情况下,我发现可以以编程方式布局自定义单元格。
还要保持ViewController的精简,请创建自定义单元的子类,并重写将.subtitle作为样式传递的init方法。
示例:
class StarCell: UITableViewCell {
override init(style: UITableViewCellStyle, resuseIdentifier: String?) {
super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
self.detailTextLabel?.translatesAutoresizingMaskIntoConstraints = false
self.detailTextLabel?.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10).isActive = true
self.detailTextLabel?.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
self.detailTextLabel?.heightAnchor.constraint(equalToConstant: 30).isActive = true
self.detailTextLabel.text = "Testing Subtitle"
}
}
与textLabel几乎相同。不要忘记将autoresizingMaskIntoConstraints设置为false,因为它为false,所以必须设置高度或宽度,否则标签将无法呈现。如果您希望标签高度根据屏幕尺寸而变化,则可以在设置约束时使用乘数参数。
NB。 Xcode会抱怨需要所需的init方法,只需单击红点并修复即可。 Xcode会自动为您插入代码。
答案 1 :(得分:0)
尝试一下,就我而言,我调整了textLabel和imageView的大小
import UIKit
class TableViewCellClass: UITableViewCell {
override func awakeFromNib() {
super.awakeFromNib()
}
override func layoutSubviews() {
super.layoutSubviews()
if UIDevice().userInterfaceIdiom == .pad {
//Here change your detailedTextLabel
imageView?.frame = CGRect(x: 25, y: 15.0, width: 25, height: 25)//Change left menu table view image size
imageView?.contentMode = UIViewContentMode.scaleAspectFit
textLabel?.frame = CGRect(x: 70, y: 12.5, width: 250, height: 30)//Change left menu table view text label size
} else {
//Here change your detailedTextLabel
imageView?.frame = CGRect(x: 15, y: 12.5, width: 25, height: 25)//Change left menu table view image size
imageView?.contentMode = UIViewContentMode.scaleAspectFit
textLabel?.frame = CGRect(x: 60, y: 12.5, width: 200, height: 25)//Change left menu table view text label size
}
}