Попытка расположить и изменить размеры элементов внутри ячейки таблицы, чтобы сохранить пропорции - PullRequest
0 голосов
/ 17 мая 2019

Я пытался (программно) зафиксировать размеры и положения моих элементов в моей ячейке таблицы, чтобы они автоматически менялись и хорошо выглядели на всех устройствах. Это код, который я использовал в своем файле 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)
}
...