试图让按钮在 WatchKit 中旋转 [英] Trying to get button to spin in WatchKit

查看:23
本文介绍了试图让按钮在 WatchKit 中旋转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的代码在 swift 中适用于 iPhone 应用程序,但不适用于 WatchKit 7.0 测试版.出路和动作不同.我不确定需要改变什么才能让它在 WatchKit 中工作.请帮忙!

the code i'm using works just fine in swift for iPhone apps but not in the WatchKit 7.0 beta. the outlets and actions are different. I'm not sure what needs to change to make it work in WatchKit. please help!

import WatchKit
import Foundation

class InterfaceController: WKInterfaceController {

    @IBOutlet var spinButton: WKInterfaceButton!

    var isRotating = false


    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

        // Configure interface objects here.
    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

    @IBAction func spinAction() {

        if !isRotating {
        // create a spin animation
        let spinAnimation = CABasicAnimation()
        // starts from 0
        spinAnimation.fromValue = 0
        // goes to 360 ( 2 * π )
        spinAnimation.toValue = M_PI*2
        // define how long it will take to complete a 360
        spinAnimation.duration = 1
        // make it spin infinitely
        spinAnimation.repeatCount = Float.infinity
        // do not remove when completed
        spinAnimation.removedOnCompletion = false
        // specify the fill mode
        spinAnimation.fillMode = kCAFillModeForwards
        // and the animation acceleration
        spinAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
        // add the animation to the button layer
        spinButton.layer.addAnimation(spinAnimation, forKey: "transform.rotation.z")

    } else {
        // remove the animation
        spinButton.layer.removeAllAnimations()
    }
    // toggle its state
    isRotating = !isRotating

  }

}

推荐答案

在针对 watchOS 进行开发时,您只能使用 iOS 上所有可用 API 的子集.

You are limited to a subset of all the APIs available on iOS when developing for the watchOS.

如果您想制作基本动画,请尝试使用 WKInterfacePicker 并在移动数字表冠时更改图像.

If you want to do basic animations try out a WKInterfacePicker and change images when the digital crown is moved.

IBOutlet WKInterfacePicker *myPicker;

- (void)willActivate {
    [super willActivate];

    WKPickerItem *item1 = [[WKPickerItem alloc] init];
    item1.contentImage = [WKImage imageWithImageName:@"Unknown.png"];

    WKPickerItem *item2 = [[WKPickerItem alloc] init];
    item2.contentImage = [WKImage imageWithImageName:@"Unknown-2.png"];

    [self.myPicker setItems:array];

}

当值超过数组计数时,从索引 0 开始.

When the value exceeds the array count start over from index 0.

- (IBAction)myPickerAction:(NSInteger)value {

    if (value % 2 == 0) {
        [self.myPicker setSelectedItemIndex:-1];
    }

}

这将使数字表冠旋转时 WKInterfacePicker 在您的图像之间发生变化.

This will make the WKInterfacePicker change between your images when the digital crown is rotated.

这篇关于试图让按钮在 WatchKit 中旋转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆