Swift 4: маска не работает для UIImage? - PullRequest
0 голосов
/ 26 июня 2018

Я запускаю приведенный ниже код (упрощенный для важных блоков), пытаясь создать анимацию бокового меню, как в этом видео: https://www.youtube.com/watch?v=ej5laXv2dzQ&vl=en. Я пытаюсь сделать весь проект без использования раскадровки ( слышал, что это хорошая практика, я новичок в разработке для iOS, смеется), что означает, что мне нужно программно создать маску для бокового меню, и я изменил некоторый код в соответствии со своими потребностями. Однако всякий раз, когда я запускаю приведенный ниже код, изображение, на котором я устанавливаю маску, исчезает. Программа строит, но вид изображения бокового меню просто не появляется (изображение показано ниже). Куда я иду не так? Спасибо.

let maskView: UIImageView = {
    let iv = UIImageView()
    iv.backgroundColor = .blue
    return iv
}()

let sideMenu: UIImageView = {
    let iv = UIImageView()
    iv.image = "example.png"
    iv.frame.origin.x = -80 //Setting side menu image view to off the left side of the screen so that it can slide in when tapped
    return iv
}()

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(maskView)
    view.addSubview(sideMenu)

    maskView.translatesAutoresizingMaskIntoConstraints = false
    maskView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    maskView.widthAnchor.constraint(equalTo: 60).isActive = true
    maskView.heightAnchor.constraint(equalTo: view.frame.height).isActive = true

    sideMenu.translatesAutoresizingMaskIntoConstraints = false
    sideMenu.rightAnchor.constraint(equalTo: view.leftAnchor).isActive = true // So when tapped, it slides 80px to the right, entering the screen
    sideMenu.widthAnchor.constraint(equalTo: 80).isActive = true
    sideMenu.heightAnchor.constraint(equalTo: view.frame.height).isActive = true

    sideMenu.mask = maskView // this is always the line that makes the sideMenu disappear
}

Изображение проблемы (должен иметь белый фон для бокового меню слева):

Изображение

1 Ответ

0 голосов
/ 26 июня 2018

Вам нужно установить ограничение Y как top или centerY

maskView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
sideMenu.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
...