无法移动包含自定义按钮的视图

时间:2019-02-26 12:11:39

标签: swift uikit

我有一个包含2个视图的View控制器,其中一个包含一个按钮。 两种视图在比例高度,宽高比,将其中心X(带乘数)和底部空间(带乘数)对齐到超级视图时都有矛盾之处。它们都以alpha = 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的行,它将起作用,但是显然那不是一种选择。怎么了?

0 个答案:

没有答案