Swift - Как создать пространство между видами, не обрезая контент - PullRequest
0 голосов
/ 31 января 2020

enter image description here

У меня есть контроллер вида (B) внутри контейнера (A), и я хотел бы создать некоторое пространство между ними. Прямо сейчас у меня есть что-то вроде изображения слева, где созданный мной отступ занимает место в B, а содержимое обрезается. Изображение справа - это желаемый результат, где B будет иметь закругленные углы и больше места от A. Вот как выглядит код внутри моего класса контейнера прямо сейчас:

private func configureSampleContainer() {
    sampleController.view.layer.borderColor = UIColor.clear
    sampleController.view.layer.borderWidth = 10
    sampleController.view.clipsToBounds = true
    addChild(sampleController)
    sampleController.view.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.constrain(view: sampleController.view, containerView: sampleContainer)
    sampleController.didMove(toParent: self)
}

configureSampleContainer вызывается внутри viewDidLoad .

Контроллер представления B также используется в другом месте, поэтому в идеале я бы ничего не изменил в B. Так как я могу достичь этого программным путем из моего класса контейнера A?

1 Ответ

0 голосов
/ 31 января 2020

Я считаю, что единственное, что вам нужно сделать, это добавить больше ограничений в представление вашего sampleController.

Определить расширение или просто использовать тело созданного мной расширения.

extension UIViewController {

  func constrain(with margin: CGFloat, to: UIViewController) {
    view.translatesAutoresizingMaskIntoConstraints = false
    view.topAnchor.constraint(equalTo: to.view.topAnchor, constant: margin).isActive = true
    view.leftAnchor.constraint(equalTo: to.view.leftAnchor, constant: margin).isActive = true
    view.rightAnchor.constraint(equalTo: to.view.rightAnchor, constant: margin).isActive = true
    view.bottomAnchor.constraint(equalTo: to.view.bottomAnchor, constant: margin).isActive = true
  }

}

Это будет использовано в вашем контексте как таковое.

private func configureSampleContainer() {
  sampleController.view.layer.borderColor = UIColor.clear
  sampleController.view.layer.borderWidth = 10
  sampleController.view.clipsToBounds = true
  addChild(sampleController)
  sampleController.constrain(with: 30, to: view)
  sampleController.didMove(toParent: self)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...