Добавить полноэкранный вид как подпредставление контроллера представления - PullRequest
0 голосов
/ 28 августа 2018

Я хочу создать представление1, которое я могу добавить в качестве подпредставления к моему контроллеру представления, которое покрывает весь экран. Затем внутри view1 я хочу разместить вид 100x100 в центре.

Как я могу сделать это с помощью swift? (не раскадровка). Я хочу создать отдельный класс uiview, а не просто переменную внутри контроллера представления.

Я хочу сделать view1 userInteractionDisabled.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Проверьте это. Было бы что-то вроде этого

class MyView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)

        addMySubviews()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        addMySubviews()
    }

    func addMySubviews() {
        let view = UIView(frame: CGRect.zero)
        view.translatesAutoresizingMaskIntoConstraints = false

        addSubview(view)
        leadingAnchor.constraintEqualToSystemSpacingAfter(view.leadingAnchor, multiplier: 0).isActive = true
        topAnchor.constraintEqualToSystemSpacingBelow(view.topAnchor, multiplier: 0).isActive = true
        trailingAnchor.constraintEqualToSystemSpacingAfter(view.trailingAnchor, multiplier: 0).isActive = true
        bottomAnchor.constraintEqualToSystemSpacingBelow(view.bottomAnchor, multiplier: 0).isActive = true

        let view100x100 = UIView(frame: CGRect.zero)
        view100x100.translatesAutoresizingMaskIntoConstraints = false

        view.addSubview(view100x100)

        view100x100.centerXAnchor.constraintEqualToSystemSpacingAfter(centerXAnchor, multiplier: 0).isActive = true
        view100x100.centerYAnchor.constraintEqualToSystemSpacingBelow(centerYAnchor, multiplier: 0).isActive = true
        view100x100.heightAnchor.constraint(equalToConstant: 100).isActive = true
        view100x100.widthAnchor.constraint(equalToConstant: 100).isActive = true
    }
}

Используйте, как указано ниже:

let myView = MyView(frame: CGRect(x: 0, y: 0, width: 275, height: 600))

ИЛИ

let myView = MyView(frame: view.frame)
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)

myView.leadingAnchor.constraintEqualToSystemSpacingAfter(view.leadingAnchor, multiplier: 0).isActive = true
myView.topAnchor.constraintEqualToSystemSpacingBelow(view.topAnchor, multiplier: 0).isActive = true
myView.trailingAnchor.constraintEqualToSystemSpacingAfter(view.trailingAnchor, multiplier: 0).isActive = true
myView.bottomAnchor.constraintEqualToSystemSpacingBelow(view.bottomAnchor, multiplier: 0).isActive = true
0 голосов
/ 28 августа 2018

Так как вы хотите отдельный класс uiview, для двух представлений создайте два класса. Таким образом, модулирование кода лучше, как показано ниже:

class TypeOneView: UIView {

  convenience init() {
    self.init(frame: UIScreen.main.bounds)
    isUserInteractionEnabled = false
    // more ui customization
    backgroundColor = UIColor.green
    // add more customization if you want
  }

}

class TypeTwoView: UIView {

  convenience init(_ width: Double,_ height: Double) {
    let fullScreenHeight = Double(UIScreen.main.bounds.height)
    let fullScreenWidth = Double(UIScreen.main.bounds.width)
    self.init(frame: CGRect(x: (fullScreenWidth/2) - (width/2), y: (fullScreenHeight/2) - (height/2), width: width, height: width))
    // additional ui customization
    backgroundColor = UIColor.red
    // add more customization if you want
  }
}

Затем создайте экземпляр и добавьте эти представления как подпредставление в вашем классе контроллера целевого представления как:

    let view1 = TypeOneView()
    let view2 = TypeTwoView(100.0, 100.0)
    view.addSubview(view1)
    view.addSubview(view2)
    view.bringSubview(toFront: view2)

результат:

enter image description here

0 голосов
/ 28 августа 2018
var view1:UIView!
var view2:UIView!

override func viewDidLoad() {

    view1.translatesAutoresizingMaskIntoConstraints = false
    view1.isUserInteractionEnabled = false
    self.view.addSubview(view1)

    view1.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0).isActive = true
    view1.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 0).isActive = true
    view1.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
    view1.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true

    view2.translatesAutoresizingMaskIntoConstraints = false
    self.view1.addSubview(view2)

    view2.heightAnchor.constraint(equalToConstant: 100).isActive = true
    view2.widthAnchor.constraint(equalToConstant: 100).isActive = true

    view2.centerXAnchor.constraint(equalTo: self.view1.centerXAnchor).isActive = true
    view2.centerYAnchor.constraint(equalTo: self.view1.centerYAnchor).isActive = true

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