我将一个应用程序从Objective-C移植到纯粹的Swift中,我面临着一个奇怪的问题。
我已经获得了AlertView
类,它替换了标准UIAlertView
(现在为UIAlertController
),用于显示可设置动画的弹出窗口。 AlertView
是在UIViewController
扩展程序中创建的 - 它以视图控制器的视图框架为基础并添加为子视图。
AlertView
有一个属性,它是PopupView
的实例 - 带有xib的自定义UIView
子类(在Autolayout上)。此弹出窗口应具有动态高度取决于其内容(多行消息标签)。
现在,当我尝试在AlertView
课程中设置此弹出窗口的动画时:
PopupView
setTranslatesAutoresizingMaskIntoConstraints(false)
时 - 视图的高度正确但在动画中设置其框架并不按预期工作 - 视图粘贴在左上角< / LI>
setTranslatesAutoresizingMaskIntoConstraints(true)
时 - 动画按预期工作但是视图的大小来自xib(根据内容不会扩展)这里有什么不妥?
EDIT 显示弹出方法:
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)
答案 0 :(得分:1)
好的,得到了解决方案。我已经停止混合自动布局和直接帧修改,而是使用纯自动布局。