Невозможно переместить вид, содержащий пользовательскую кнопку - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть контроллер View, содержащий 2 View, один из которых содержит кнопку.Оба вида имеют ограничения для пропорциональной высоты, соотношения сторон, выравнивания их центра X (с множителем) и нижнего пространства (с множителем) для суперпредставления.они оба начинаются с альфа = 0, и я постепенно увеличиваю их с помощью:

override func viewDidAppear(_ animated: Bool) {
    UIView.animate(withDuration: 0.75, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {
        self.infoContainer.alpha = 1.0
        self.infoContainer.frame.origin.y -= UIScreen.main.bounds.height * 0.25

        self.ordersContainer.alpha = 1.0
        self.ordersContainer.frame.origin.y -= UIScreen.main.bounds.height * 0.25
    }, completion: nil)
}

, теперь это работает без проблем, но теперь мне нужно изменить размер текста упомянутой кнопки в зависимости от разрешения экрана.Итак, я создал класс:

class ScaledButton: UIButton {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        var att = titleLabel?.attributedText?.attributes(at: 0, effectiveRange: nil)
        let font = att?[NSAttributedStringKey.font] as? UIFont
        let size = font?.pointSize
        att?[NSAttributedStringKey.font] = UIFont(name: (font?.fontName)!, size: size! * ScaledLabel.scaleFactor)
        if(titleLabel?.text == nil) {return}
        setAttributedTitle(NSAttributedString(string: (titleLabel?.text)!, attributes: att), for: .normal)

    }
}

Статический коэффициент ScaledLabel.scaleFactor рассчитан в другом месте.Теперь, когда я установил этот класс для кнопки во втором представлении, вместо того, чтобы начинать с позиции, в которой они находятся в раскадровке, и заканчивать так, как должен, они начинают правильно (я считаю), перемещаются в правильное положение мгновенно, затемсразу к позиции дальше вниз, а затем с анимацией в позицию tsart .... Если я удаляю строку с setAttributedTitle из моего класса, это работает, но, очевидно, это не вариант.Что здесь не так?

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