gpt4 book ai didi

ios - 如何使用 AutoLayout 在 swift 中平滑地动画 UIImageView?

转载 作者:可可西里 更新时间:2023-11-01 01:35:58 25 4
gpt4 key购买 nike

我正在尝试复制我当前使用的应用程序的动画。在应用程序中,拍照后,如果用户点击 UIImageView,它会平滑地展开到一定大小,而在点击 UIImageView 时,它会平滑地折叠到原始大小。

这是一个例子:

enter image description here

但是,当我尝试复制它时,动画“非常糟糕”,如下所示:

enter image description here

这是我的代码示例:

if recogizer.view == thumbnailImageView && isThumbnailExpanded == false
{
UIView.animateWithDuration(1, animations: {() -> Void in

self.thumbnailImageView!.frame.size.width = self.view.frame.size.width * 0.7
self.thumbnailImageView!.frame.size.height = self.view.frame.size.height * 0.6
self.thumbnailImageView!.frame.origin.x = (self.view.frame.width / 2) - (self.thumbnailImageView!.frame.size.width / 2)
self.thumbnailImageView!.frame.origin.y = -100

})

isThumbnailExpanded = true
}
else if recogizer.view == thumbnailImageView && isThumbnailExpanded == true
{
UIView.animateWithDuration(1, animations: {() -> Void in

self.thumbnailImageView!.frame.size.width = self.thumbnailImageViewWidth
self.thumbnailImageView!.frame.size.height = self.thumbnailImageViewHeight
self.thumbnailImageView!.frame.origin.x = self.thumbnailImageViewXPosition
self.thumbnailImageView!.frame.origin.y = self.thumbnailImageViewYPosition

})

isThumbnailExpanded = false
}

这是我的自动布局约束:

enter image description here我怎样才能使我的 UIImageView 更流畅,如上所示?

谢谢

最佳答案

动画出现摇晃是因为您正在更改图像的宽高比,您应该保持宽高比以免挤压图像。


此外,您不应该通过更改其框架来为基于自动布局约束的 UIView 设置动画。在动画 block 中,您应该更改在 Storyboard中添加的 ImageView 约束。

要获得对 Storyboard创建的约束的引用,请通过control 创建一个 IBOutlet - 将它们拖到您的 View Controller 。这将在您的代码中创建一个 NSLayoutConstraint 类型的变量。在动画 block 内,更改要更改的每个约束的 constant 属性,然后在 View 上调用 layoutIfNeeded

UIView.animateWithDuration(1, animations: {

yourConstraint.constant = 20
// any other constraints...
// ...
thumbnailImageView.layoutIfNeeded()
})

关于ios - 如何使用 AutoLayout 在 swift 中平滑地动画 UIImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com