- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用以下代码让我的 UIImageView (self.posterImageview
) 在一组带有动画的 UIImage 中循环:
func animatePoster (imageArray: [UIImage], count: Int = 0)
{
UIView.transitionWithView
(
self.posterImageview,
duration: 2,
options: UIViewAnimationOptions.TransitionFlipFromBottom,
animations:
{
self.posterImageview.image = imageArray[count]
},
completion:
{
finished in
if (count == imageArray.count - 1) // Last image
{
self.animatePoster(imageArray)
}
else
{
self.animatePoster(imageArray, count: count + 1)
}
}
)
}
然而,完成 block 似乎并没有像我想象的那样工作。现在,它在所有图像中反复闪烁,不允许在移动到下一个之前播放完整的动画。增加动画的持续时间没有帮助,当我对递归设置限制时(例如,当我到达最终图像时结束),然后所有图像都会快速循环,除了最后一个,它正确地动画。
任何见解都值得赞赏。
最佳答案
我对 show animation
做了一些不同的改动。请检查它是否对您有帮助。
现在我已经添加了虚拟代码
。
override func viewDidLoad() {
super.viewDidLoad()
self.arrimages = NSArray (arrayLiteral: UIImage(named: "1.png")!,UIImage(named: "2.png")!,UIImage(named: "3.png")!,UIImage(named: "4.png")!)
print("Images array = \(self.arrimages)")
self.posterImageview.image = UIImage(named: "1.png")!
self.animatePoster(self.arrimages as! [UIImage], count: 1)
}
func animatePoster (imageArray: [UIImage], count: Int = 0){
print("count value = \(count)")
UIView.transitionWithView(self.posterImageview, duration: 5, options: UIViewAnimationOptions.TransitionFlipFromBottom, animations: {
}, completion: { (finished: Bool) -> () in
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.posterImageview.image = imageArray[count]
}
if (count == (imageArray.count - 1)) // Last image
{
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(4 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.animatePoster(imageArray)
}
}
else
{
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(4 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.animatePoster(imageArray, count: count + 1)
}
}
})
}
关于ios - Swift:UIView.transitionWithView 完成 block 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654694/
我正在使用以下代码尝试翻转 UIView。这是一张扑克牌。有一个容器 View ,有两个 child ,前后。我在这里读过类似的问题,这应该是正确的方法,但实际的翻转本身并没有被执行。 我打算为此设置
我正在尝试编写一个应用程序,它使用自定义动画在 UINavigationController 的 View 堆栈中的 View Controller 之间进行转换。 现在,我正在添加同一 View 的
我有一个占位符 UIImageView(从 .xib 加载),我想加载一张卡片背面的图片,然后翻转到正面图像。 [cardView setImage:backCardImage]; [UIView t
我有一个首先显示登录屏幕的应用程序。用户登录后,将执行以下代码: [UIView transitionWithView:self.view.window
我查看 Didload 我有如下设置: [[self layer] setCornerRadius:30.0f]; NSString *imgFilepath = [[NSBundle
我已经尝试了以下几种变体,但都无济于事。我想要的是一个显示一些东西的向下 curl 过渡,然后是一个相反的向上 curl 过渡。有透明度,所以效果是一个清晰的东西在 View 上滚动。这是在上卷和下卷
这是测试项目中主视图 Controller 的 viewDidLoad: - (void)viewDidLoad { [ super viewDidLoad]; UIView *containerVi
我正在尝试在我的应用程序中为 root-view-controller-change 设置动画。交换 View Controller 后,我立即加载第二个 Controller 所需的数据。在加载数据
有人可以帮助我了解 swift 中 transitionWithView 的语法吗?在 objective-c 中我会这样使用它: [UIView transitionWithView:[ self
我的主视图有一个 subview ,其中有一个 UIActivityIndicatorView。最初,此 subview 的 hidden 属性设置为 YES。 我希望这个 subview 淡入屏
我在使用 transitionWithView 和 animateWithDuration 时遇到问题。我的一个 animateWithDuration block 没有过渡,这是一个突然的变化,并且
我想在动画完成后运行一段代码,但编译器显示以下错误:“不兼容的 block 指针类型将‘void (^)(void)’发送到‘void (^)(BOOL) 类型的参数)'" 这是我的代码,我不确定我做
使用下面的代码,我已经成功地使我的 UIImageView 在其图像中淡出。 [UIView transitionWithView:myCell.myImageView duration:2.0 op
我几乎可以用 AnimationWithDuration 做 TransistionWithView 能做的所有事情。我真的不确定什么时候只有一个用例超过另一个用例。 在 AnimateWithDur
我正在尝试制作一个简单的 Simon 游戏(闪烁的颜色序列越来越多,用户必须尝试重复该序列)。我要解决的方法是使用 4 个带有 8 个图像的 UIView。所以有一个 UIView 用于红色、蓝色、绿
我正在尝试在两个 subview (view1 和 view2)之间创建一个过渡。当按下按钮时,我希望 view1(正面)翻转并显示 view2(背面)。我已经尝试过 transitionFromVi
我目前有一个 UIView,上面有 UILabel。 这些 UILabel 有圆角。 我按下一个按钮,然后使用 UIView transitionWithView 方法以编程方式删除所有这些标签。 但
我已经建立了一个简单的项目来试验 UIView transitionWithView: 动画片段并遇到了相当奇怪的行为。 动画只对标签的文本起作用(在 View 旋转一半时改变它),但是颜色变化发生在
我想创建一些在它们之间有延迟的动画,所以我决定使用 UIView.animateKeyframesWithDuration:delay:options:animations:completion:。
我正在尝试使用以下代码让我的 UIImageView (self.posterImageview) 在一组带有动画的 UIImage 中循环: func animatePoster (imageAr
我是一名优秀的程序员,十分优秀!