簡體   English   中英

快速設置框架無法正常工作

[英]setting frame in swift doesn't work as expected

我正在將一個應用程序從Objective-C移植到純Swift中,並且遇到了奇怪的問題。

我有AlertView類,該類替代了用於顯示可顯示動畫的彈出窗口的標准UIAlertView (現在為UIAlertController )。 AlertView是在UIViewController擴展中創建的-它是使用視圖控制器的視圖框架初始化的,並作為子視圖添加。

AlertView具有一個屬性,該屬性是PopupView的實例-具有xib的自定義UIView子類(在Autolayout上)。 此彈出窗口的動態高度取決於其內容(多行消息標簽)。

現在,當我嘗試為AlertView類中的彈出窗口設置動畫時:

  • 當我在PopupView設置時, setTranslatesAutoresizingMaskIntoConstraints(false) -視圖的高度正確,但在動畫中設置其框架無法正常工作-視圖固定在左上角
  • 當我設置setTranslatesAutoresizingMaskIntoConstraints(true) -動畫按預期工作,但視圖的大小為xib(不會根據內容擴展)

這里有什么問題?

編輯顯示彈出方法:

private func showPopup(popupView: PopupView)
{
    var beginFrame = popupView.frame
    beginFrame.origin.y = -beginFrame.size.height
    beginFrame.origin.x = self.bounds.size.width/2 - beginFrame.width/2
    popupView.frame = beginFrame

    var endFrame = beginFrame
    endFrame.origin.y = self.bounds.size.height/2 - endFrame.size.height/2

    popupView.hidden = false
    DLog(beginFrame)

    UIView.animateWithDuration(kAnimationTime, delay: 0, usingSpringWithDamping: kAnimationDamping, initialSpringVelocity: kAnimationSpringVelocity, options: UIViewAnimationOptions.CurveEaseIn, animations:
        { () -> Void in
            DLog(endFrame)
            popupView.frame = endFrame
    }, completion: nil)
}

在兩種情況下,它都顯示在控制台中:

(72.5,-155.0、230.0、155.0)

(72.5、256.0、230.0、155.0)

EDIT2

setTranslatesAutoresizingMaskIntoConstraints(false)

設置假

setTranslatesAutoresizingMaskIntoConstraints(true)

設置真

好,找到解決方案。 我已經停止混合使用自動布局和直接修改框架,而是使用純自動布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM