Я пытался (программно) зафиксировать размеры и положения моих элементов в моей ячейке таблицы, чтобы они автоматически менялись и хорошо выглядели на всех устройствах. Это код, который я использовал в своем файле XIB моей пользовательской ячейки, но он не изменяется автоматически.
В моем viewcontroller, где я использую ячейки в табличном представлении, я объявил, что хочу быть высотой строки таким образом:
collectionViewImages.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height * 0.27)
self.tableViewDishes.dataSource = self
self.tableViewDishes.delegate = self
self.tableViewDishes.rowHeight = self.view.frame.height * 0.1678
.....
Файл Xib:
@IBOutlet weak var dishImage: UIImageView!
@IBOutlet weak var dishName: UILabel!
@IBOutlet weak var dishDescription: UITextView!
@IBOutlet weak var dishPrice: UILabel!
@IBOutlet weak var addDishButton: UIButton!
@IBOutlet weak var removeDishButton: UIButton!
@IBOutlet weak var dishQuantity: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
let width = contentView.frame.width
let height = contentView.frame.height
//MISSING SIZE ADJUSTING FOR THE TEXTS, IGNORE
//Sets the image position of the cells
dishImage.center.x = width * 0.1739
dishImage.center.y = height * 0.4933
dishImage.frame.size = CGSize(width: width * 128/414, height: height * 128/150)
dishImage.layer.cornerRadius = height * 0.1
//Sets the quantity label
dishQuantity.center.x = width * 374.5/414
dishQuantity.center.y = height * 31.5/150
//Sets the position of the title and text
dishName.frame = CGRect(x: width * 156/414, y: height * 21/150, width: width * 241/414, height: height * 20/150)
//Sets position of description and description text
dishDescription.frame = CGRect(x: width * 156/414, y: height * 49/150, width: width * 190/414, height: height * 59/150)
//Sets position and text of price label
dishPrice.frame = CGRect(x: width * 156/414, y: height * 117/150, width: width * 190/414, height: height * 21/150)
//Sets position of addDishButton
addDishButton.frame = CGRect(x: width * 363/414, y: height * 67/150, width: width * 22/414, height: height * 22/150)
//Sets position of removeDishButton
removeDishButton.frame = CGRect(x: width * 363/414, y: height * 97/150, width: width * 22/414, height: height * 22/150)
}