Контекст У меня есть UITableViewController с пользовательскими ячейками, созданными в файле .xib.В этом файле .xib я пытаюсь установить динамическую ширину, чтобы разделить ширину ячейки на три подпредставления.
Проблема заключается в том, что ячейка не может получить нужную ширину, из-за чего ячейка не заполняет всю ширину.Вот картинка, чтобы лучше проиллюстрировать то, что я говорю.
cell_not_filling_width
Мое понимание (может быть, это совершенно неправильно понимается) Установка ограничения кадрав .xib файл не годится, т.к. программа не будет знать ширину до времени выполнения.Другими словами, awakeFromNib
(1.) загружается до того, как будет определена ширина экрана ... Так что, как решить эту проблему ... Любое руководство будет с благодарностью.
- Предположительно, это гдеширина установлена - ширина моего конструктора интерфейса, когда я смотрю на файл .xib, одинакова, когда я распечатываю его в
cellForRowAt
Примечания Вмоя функция viewDidLoad Я зарегистрировал nibfile как таковой, поэтому я не думаю, что это проблема.tableView.register(UINib(nibName: "NewTableViewCell", bundle: nil) , forCellReuseIdentifier: "newTableViewCell")
.
Вот некоторый код, который может иметь значение.
NewTableViewCell.swift
import UIKit
class NewTableViewCell: UITableViewCell {
@IBOutlet var typeLabel: UILabel!
@IBOutlet var timeLabel: UILabel!
@IBOutlet var completedLabel: UILabel!
@IBOutlet var correctLabel: UILabel!
@IBOutlet var parentView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
}
parentView - это представление, содержащее три подпредставления.
Вот изображение файла .xib
Вот изображение моих ограничений на файл .xib (кажется, загромождено)
ОБНОВЛЕНИЕ Опробовал подход представления стека: XCode просто определяет ширину как подпредставление с наибольшей шириной (в зависимости от размера текста)
Здесь это изображение текущей ситуации и текущих ограничений
Я подумал, что ограничения на метке также могут иметь отношение:
UPDATE2 OkЯ думаю, что нашел проблему;По сути, вид стека не может определить длину и ширину суперразмера и его размер.
ПРИМЕЧАНИЕ Я отредактировал ограничения.
Здесь это то, на что это похоже, если я устанавливаю ширину и высоту постоянным значением.Представление стека фактически перейдет к установленным ограничениям
Здесь - это то, на что это похоже, если я уберу эти ограничения.Таким образом, кажется, что ширина и высота равны 0. Поэтому я считаю, что ограничения не принимаются из супер-представления.
Кто-нибудь знает, как это исправить?