Как ограничить размер UIView в конструкторе раскадровок и общее представление во время выполнения? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть собственный UIView, мой маленький компонент позволяет называть его PlaceholderView.

Мой прототип UITableViewCell имеет метку и PlaceholderView, который находится внутри UIStackView, который находится вертикально по оси.

PlaceholderView, как предполагается, вызывает некоторый пользовательский код, который отправляется в кэш для получения определенного представления, а затем добавляет его в SubView в PlaceholderView.

Я хочу, чтобы это подпредставление занимало всю поверхность всего PlaceholderView.Как мне это сделать?Я пробовал это, но не уверен, что это делает работу

if (view != null)
{
    AddSubview(view);
    view.SizeToFit();
}

Второй вопрос.Это представление, которое я добавляю, когда я создаю их во время разработки, я создаю новую раскадровку, перетаскиваю ViewController, а затем продолжаю размещать на нем другие элементы управления, такие как Labels и Button.

Как мне ограничить этоОбщая высота ViewController, так что это полностью фиксированный размер?Я знаю, что могу установить смоделированные метрики, и я также устанавливаю вид.Размер кадра для ограничения высоты.

Существуют ли более эффективные способы облегчения ограничения этих видов?

В настоящее время, когда я устанавливаю эти фиксированные значения высоты, это вызывает некоторые странные проблемы с перекрытиями, еслиЯ установил для UITableView.RowHeigh значение AutomaticDimension.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Я хочу, чтобы это подпредставление занимало всю поверхность PlaceplaceView

Вы можете попробовать autolayout :

if (view != null)
{
    view.TranslatesAutoresizingMaskIntoConstraints = false;
    AddSubview(view);
    view.LeadingAnchor.ConstraintEqualTo(this.LeadingAnchor).Active = true;
    view.TopAnchor.ConstraintEqualTo(this.TopAnchor).Active = true;
    view.TrailingAnchor.ConstraintEqualTo(this.TrailingAnchor).Active = true;
    view.BottomAnchor.ConstraintEqualTo(this.BottomAnchor).Active = true;
}

Существуют ли более эффективные способы облегчения ограничения этих представлений?

Ответ также является автоматическим макетом.Установите ограничение высоты элемента управления, чтобы указать, сколько места он хочет занять.См. Эту ветку для получения дополнительной информации: Использование автоматического макета в UITableView для динамического макета ячеек и переменной высоты строк .

Несмотря на то, что он является нативным, вы можете увидеть его концепцию.

0 голосов
/ 14 июня 2019
// attaches all sides of the child to its parent view
extension UIView {    
    func layoutToSuperview() {
        guard let view = self.superview else {return}
        self.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        self.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        self.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        self.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    }
}

Использование: Вместо view.SizeToFit() используйте view.layoutToSuperview()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...