Добавление кнопки для просмотра созданного программно - PullRequest
0 голосов
/ 20 июня 2019

У меня есть представление, которое создается программно следующим образом

  let viewOne = UIView()
        viewOne.contentMode = .scaleAspectFit
        viewOne.backgroundColor = UIColor.blue
        viewOne.layer.masksToBounds = true
        viewOne.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(viewOne)

    NSLayoutConstraint.activate([
        viewOne.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        viewOne.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        viewOne.heightAnchor.constraint(equalToConstant:200),
        viewOne.widthAnchor.constraint(equalToConstant:200)])

У меня есть следующая кнопка, которая программно создается следующим образом:

    let button = UIButton()
    button.frame = CGRect(x: 125, y: 125, width: 100, height: 50)
    button.backgroundColor = UIColor.green
    button.setTitle("Ok", for: .normal)
    button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    viewOne.addSubview(button)

Как мне добавить button в центр viewOne. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 20 июня 2019

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

let viewOne = UIView()
viewOne.contentMode = .scaleAspectFit
viewOne.backgroundColor = UIColor.blue
viewOne.layer.masksToBounds = true
viewOne.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(viewOne)

let button = UIButton() 
button.backgroundColor = UIColor.green
button.setTitle("Ok", for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside) 
button.translatesAutoresizingMaskIntoConstraints = false
viewOne.addSubview(button)

NSLayoutConstraint.activate([

    viewOne.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    viewOne.centerYAnchor.constraint(equalTo: view.centerYAnchor),
    viewOne.heightAnchor.constraint(equalToConstant:200),
    viewOne.widthAnchor.constraint(equalToConstant:200),

    button.centerXAnchor.constraint(equalTo: viewOne.centerXAnchor),
    button.centerYAnchor.constraint(equalTo: viewOne.centerYAnchor),  
    button.heightAnchor.constraint(equalToConstant:100),
    button.widthAnchor.constraint(equalToConstant:50)

])

Совет:

вы можете при желании удалить эти 2 ограничения, так как кнопка имеет встроенный размер контента по умолчанию, но если вам нужен фиксированный контент, оставьте их

 button.heightAnchor.constraint(equalToConstant:100),
 button.widthAnchor.constraint(equalToConstant:50)
0 голосов
/ 20 июня 2019

Кнопка сама имеет ширину и высоту.Так что вам не нужно это исправлять

button.centerXAnchor.constraint(equalTo: viewOne.centerXAnchor)
button.centerYAnchor.constraint(equalTo: viewOne.centerYAnchor)

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

Вы можете использовать autolayout, как показано ниже:

    let button = UIButton()
    button.translatesAutoresizingMaskIntoConstraints = false
    button.backgroundColor = UIColor.green
    button.setTitle("Ok", for: .normal)
    button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    viewOne.addSubview(button)
    NSLayoutConstraint.activate([
    button.centerXAnchor.constraint(equalTo: viewOne.centerXAnchor),
    button.centerYAnchor.constraint(equalTo: viewOne.centerYAnchor),
    button.heightAnchor.constraint(equalToConstant:50),
    button.widthAnchor.constraint(equalToConstant:100)])

Или поместите кнопку вручную после выполнения некоторых расчетов.

let button = UIButton(frame: CGRect(x: 50, y: 75, width: 100, height: 50))
viewOne.addSubview(button)

Я получил х и у следующим образом: x = viewOne width / 2 - ширина кнопки / 2 = 200/2 - 100/2 = 50 y = viewOne height / 2 - высота кнопки / 2 = 200/2 - 50/2 = 75

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