旋转具有自定义单元格的表视图控制器时出现问题。我创建了一个简单的Table View Controller并按如下所示进行设置
import UIKit
class MyTableTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(CustomCellMain.self, forCellReuseIdentifier: "customCellMain")
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCellMain") as! CustomCellMain
cell.mainImage = UIImage(named: "testtest.jpeg")
cell.message = "Hello"
cell.layoutSubviews()
return cell
}
}
我的自定义单元格看起来像这样:
import UIKit
class CustomCellMain: UITableViewCell {
var message: String?
var mainImage: UIImage?
var messageView: UILabel = {
var label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
//labelView.isScrollEnabled = false
label.textAlignment = .right
label.font = .systemFont(ofSize: 27)
return label
}()
var mainImageView: UIImageView = {
var imageView = UIImageView()
imageView.sizeToFit()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFit
imageView.clipsToBounds = true
imageView.layer.cornerRadius = 0
return imageView
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.addSubview(mainImageView)
self.addSubview(messageView)
//Image
mainImageView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10).isActive = true
mainImageView.topAnchor.constraint(equalTo: self.topAnchor, constant: 9).isActive = true
mainImageView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -8).isActive = true
mainImageView.widthAnchor.constraint(equalToConstant: 75).isActive = true
mainImageView.heightAnchor.constraint(equalToConstant: 75).isActive = true
//Text
messageView.leftAnchor.constraint(equalTo: self.mainImageView.rightAnchor).isActive = true
messageView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -15).isActive = true
messageView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
messageView.topAnchor.constraint(equalTo: self.topAnchor, constant: 1).isActive = true
}
override func layoutSubviews() {
super.layoutSubviews()
if let message = message {
messageView.text = message
}
if let image = mainImage {
mainImageView.image = image
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
垂直看起来不错:
但是当我旋转它时,它遮住了左侧或右侧
我不知道是什么原因造成的。任何帮助将不胜感激!
您可以使用Main.Storyboard
Main.Storyboard
UITableView
Size Inspector
Content View [TickMark] Insets To Safe Area
的选项如果不起作用,请尝试Content Insets
下拉菜单选项
never
或automatic
选项。OR
在您的自定义单元文件中尝试imageView.translatesAutoresizingMaskIntoConstraints = true
在Main.Storyborad中,选择您的单元格,然后在SizeInspector的Layoutdropdown中将其赋予Translate Mask Into Constraints
我决定用Table View创建一个View Controller。这解决了问题。我认为是因为我无法将实际的表格视图限制在外面的安全区域(自定义视图大于表格视图)。