[英]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.