图像未在WKInterfaceImages IBOutlet中加载



我尝试在newBeat()函数中self.heartSymbol.setImage(currentBeatPattern.heartImage)但没有加载heartImages。我应该在那里做什么?

如果我使用类似 self.heartSymbol.setImage(UIImage(named:"greenHeartNormal")) 的东西,单个图像加载得很好,但正如您从我的数组和我的 newBeat() 函数中看到的那样,我正在尝试通过数组加载图像并输出到 IBOutlet。

这个想法是,每个图像都应该出现在屏幕上,每个图像脉冲几秒钟,bpmLabel也会随之改变值。动画在 WatchKit 中不起作用,所以我现在已经注释掉了 beat() 函数。但我仍然想用数组和那个 bpmLabel 中的静态图像来做到这一点。使用注释掉的 beat() 函数如何编辑它,以便在没有脉冲图标标签转换动画的情况下获得延时 bmpLabel 文本输出?

import WatchKit
import Foundation
struct BeatPattern {
var heartImage = WKInterfaceImage()
var description = "Normal"
var bpm = 80
var duration: Double {
    return 60.0 / Double(bpm)
}
}
let redHeartFast = WKInterfaceImage()
let yellowHeartElevated = WKInterfaceImage()
var greenHeartNormal = WKInterfaceImage()
let purpleHeartSlow = WKInterfaceImage()
let blueHeartSedated = WKInterfaceImage()

class InterfaceController: WKInterfaceController {
@IBOutlet weak var heartSymbol2: WKInterfaceImage!
@IBOutlet weak var heartSymbol: WKInterfaceImage!
@IBOutlet weak var bpmLabel: WKInterfaceLabel!
var currentBeatPattern = BeatPattern()
var currentBeatPatternIndex = 0
var beatPatternsArray = [
    BeatPattern(heartImage: redHeartFast, description: "Fast", bpm: 180),
    BeatPattern(heartImage: yellowHeartElevated, description: "Elevated", bpm: 140),
    BeatPattern(heartImage: greenHeartNormal, description: "Normal", bpm: 80),
    BeatPattern(heartImage: purpleHeartSlow, description: "Slow", bpm: 55),
    BeatPattern(heartImage: blueHeartSedated, description: "Sedated", bpm: 30)]


override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)
    //self.heartSymbol.setImage(UIImage(named:"greenHeartNormal"))   // new code
}
override func willActivate() {
    super.willActivate()
}
override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
    newBeat()
    NSTimer.scheduledTimerWithTimeInterval(8,
        target: self,
        selector: Selector("newBeat"),
        userInfo: nil,
        repeats: true)
    //beat()
}

func newBeat() {
    if ++currentBeatPatternIndex == beatPatternsArray.count {
        currentBeatPatternIndex = 0
    }
    currentBeatPattern = beatPatternsArray[currentBeatPatternIndex]
    heartSymbol = currentBeatPattern.heartImage ////// ERROR
}
 /*
func beat() {
    // 1
    UIView.animateWithDuration(currentBeatPattern.duration / 2,
        delay: 0.0,
        options: .CurveEaseInOut,
        animations: {
            // 2
            self.iconLabel.transform = CGAffineTransformScale(self.iconLabel.transform, self.shrinkFactor, self.shrinkFactor)
        },
        completion: { _ in
            // 3
            UIView.animateWithDuration(self.currentBeatPattern.duration / 2,
                delay: 0.0,
                options: .CurveEaseInOut,
                animations: {
                    // 4
                    self.iconLabel.transform = CGAffineTransformScale(self.iconLabel.transform, self.expandFactor, self.expandFactor)
                },
                completion: { _ in
                    // 5
                    self.beat()
                }
            )
        }
    )
}
*/

对于基于图像资源文件的动画,请使用约定命名图像文件name+number.extension,其中所有图像的名称和扩展字符串相同,数字值指示图像在动画序列中的位置。序列中第一个图像的编号必须为 0 或 1。例如,具有三个图像的动画可以具有文件名 image1.png、image2.png 和 image3.png。

建议将图像资源文件放在 WatchKit 应用的捆绑包中(而不是放在 WatchKit 扩展的捆绑包中)。通过将它们放置在 WatchKit 应用捆绑包中,可以使用此类的 setImageNamed: 方法来指定动画图像。您可以使用startAnimatingWithImagesInRange:duration:repeatCount:方法启动动画。或者使用[UIImage animatedImageNamed:duration:]创建动画图像,然后进行设置。

最新更新