我有一个标签和一个图像视图。我的目标是有3个点动画前面的标签,并在底部的标签在年底,如图所示
我已经能够使这个设计与点移动罚款12promax只不过我不能弄清楚如何使这个工作总是在不同的手机屏幕尺寸的预期.我如何编码,所以无论屏幕大小或uilabel字体大小它会达到相同的结果?
Animate ImageView(3点)
func showAnimatingDotsInImageView(dots: UIImageView)
{
let newX = view.bounds.width / 896 * 20
let lay = CAReplicatorLayer()
lay.frame = CGRect(x: newX,y: 0,width: dots.bounds.width,height: dots.bounds.height)
let bar = CALayer()
bar.frame = CGRect(x: 0,y: (dots.bounds.height/2) + 8 ,width: 8,height: 8) //make the objs smaller or bigger
bar.cornerRadius = bar.frame.width / 2 //make a circle, if you uncomment this you will get rects
bar.backgroundColor = UIColor.black.cgColor //colour of the objs
lay.addSublayer(bar)
lay.instanceCount = 3 //How many instances / objs do you want to see
lay.instanceTransform = CATransform3DMakeTranslation(15, 0, 0) //1st arg is the spacing between the instances
let anim = CABasicAnimation(keyPath: #keyPath(CALayer.opacity))
anim.fromValue = 1.0
anim.toValue = 0.2
anim.duration = 1
anim.repeatCount = .infinity
bar.add(anim, forKey: nil)
lay.instanceDelay = anim.duration / Double(lay.instanceCount)
dots.layer.addSublayer(lay) // add to the view
}
字符串
“从主菜单中检索框”是一个UILabel
,点在UIImageView
上动画显示
2条答案
按热度按时间lawou6xi1#
你已经很接近了......只要做一些改变就能让你达到你想要的目的。
如果你有一个
UILabel
和一个UIImageView
(或普通的UIView
)限制在标签的右边缘,你应该能够定位你的CAReplicatorLayer
,而不必担心“屏幕大小”。看看我是如何修改你的代码的:
字符串
下面是一个完整的例子:
型
编辑-在回应“克里山库马尔”评论.
要让动画在从后台返回时继续,您需要添加通知观察器。
对于“动画点”视图,使用自定义的
UIView
子类要容易得多,所以这里有一个简单的例子:型
以及显示如何使用它的示例控制器,包括当应用程序在前台和后台之间移动时启动/停止动画:
型
w51jfk4q2#
//3点动画完整代码
import Foundation导入UIKit
public class FIOProgressView {
字符串
}