ios - UIProgressView 设置为图像? UIprogressView 整个contentView,向下?

标签 ios swift

Image of desired behaviour (In Swift)

你好,

过去一周我一直在尝试解决如何在我的 viewController 中创建两个 progressView 的问题,但几乎没有成功。请参阅我附上的图表,作为我提出的问题的想法。

我正在创建一个带有计时器的游戏,每个问题都会计时。随着时间的流逝,我希望 UIProgressView 沿着整个屏幕从蓝色过渡到白色(请参见图中的数字 1,这表示白色 trackTintColor)。

图中的数字 2(青色部分)代表 progressTintColor。该图应该很清楚,因为我希望自定义 progressView 以便它向下跟踪。这是目前的主要问题之一。 (我似乎只能用小的可定制的 Progressviews 来完成演练,这些 Progressviews 是横向移动的,而不是上下移动的)

我想要实现的最困难的部分是(图中的数字 3),自定义 UIImageView,以便它慢慢地向下排水,背景颜色相反(所以狗会变成白色,青色向下泛滥与它后面流逝的 progressView 一致)。

到目前为止,这些是我尝试解决此问题的选项,但无济于事。

我尝试过使用 progressView 作为 backgroundColor,但我找不到任何其他人(向下)这样做的例子,所以我不确定这是否可行?

对于图像,我已经尝试绘制一个 CAShape 图层,但是对于像我这样的新手来说,狗的形状似乎太难了,无法有效地绘制。当意识到我无法在狗身后设置不同颜色的层以向下移动时,因为屏幕也会改变颜色,我放弃了使用此选项的所有希望。

我已经为狗图像尝试了一个 UIView 过渡,但是,我能找到的唯一一个接近的选项是 transitionCrossDissolve,它没有产生我希望的向下效果,而是从一只白狗淡化到一只不合适的青色狗。我应该以某种方式使用 progressImage 吗?如果是这样,是否可以在任何地方找到有关语法的帮助?我似乎找不到任何地方。

目前,我的 Assets 文件夹中有 55 张图片,每张图片的青色都比上一张略多,并逐渐向下移动(因为它通过一系列图片进行动画处理)。虽然这可行,但它并不是完全无缝的,看起来有点像用户在等待拨号时加载图像。

如果有人有任何想法或可以抽出时间来指导我如何去做这件事,我将非常感激。我还是个初学者所以越详细越好!哦,是的,让事情变得更困难,到目前为止,我已经设法以编程方式完成应用程序,所以以这种形式回答会很好。

提前致谢!

最佳答案

我希望你已经完美地完成了 number 1number 2。我试过 3 号。

我试过两个 UIView。它工作正常。我想,它会提供一些想法来实现您的目标。

我有两张图片。

enter image description here

TIMER 的帮助下,我尝试了这个 ProgressView 的示例。

最初,cyanDogView 高度应该为零。计时器启动后,高度应增加 2px。一旦 cyanDogView 的 高度应大于 BlackDogView,则 Timer 停止。

编码

@IBOutlet weak var blackDogView: UIView!
@IBOutlet weak var blackDogImgVw: UIImageView!

@IBOutlet weak var cyanDogView: UIView!
@IBOutlet weak var cyanDogImgVw: UIImageView!

var getHeight : CGFloat = 0.0
var progressTime = Timer()

override func viewDidAppear(_ animated: Bool) {

    cyanDogView.frame.size.height = 0

    getHeight = blackDogView.frame.height
}

@IBAction func startAnimateButAcn(_ sender: UIButton) {

    progressTime = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)

}


@objc func update() {
    cyanDogView.frame.size.height = cyanDogView.frame.size.height + 2

    if cyanDogView.frame.size.height >= getHeight
    {
        progressTime.invalidate()
        cyanDogView.frame.size.height = 0
    }
}

Storyboard

enter image description here

输出

enter image description here

关于ios - UIProgressView 设置为图像? UIprogressView 整个contentView,向下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48836938/

相关文章:

html - Bootstrap - 防止 Navbar 在 iPhone 上垂直堆叠

ios - 工具栏和 TableView 让我头疼

ios - 检查 prefix.pch 中的文件类型

ios - 让 invokeUndefinedMethodFromWebScript 在 Swift 中工作

swift - 尝试以编程方式制作退格按钮以执行与键盘删除 (ᗏX) 按钮相同的操作

objective-c - iOS 在自定义应用程序中开发 : Use Mail. 应用程序图标

ios - swift 4 : Set Different Date and Time

swift - 如何使用来自像 turbo 360 这样的在线服务器的 JSON 文件?

xcode - 当用户在 Swift 中输入 2 个字符时将焦点设置在下一个文本字段上

swift - 如何在 Swift 中抓取其他本地标签数据?