2016-07-31 13 views
0

Ich versuche, die Breite einer Gruppe in meiner WatchOS2-Anwendung zu animieren, indem Sie animateWithDurationWKInterfaceController Klasse aufrufen. Die Idee ist, dem Benutzer eine horizontale Linie zu zeigen, die ihre Breite von rechts nimmt eine gewisse Zeit (so etwas wie ein Timer) nach links über:watchOS2 animateWithDuration startet langsam und beschleunigt

self.timer.setWidth(100) 
self.animateWithDuration(NSTimeInterval(duration)) { 
    self.timer.setWidth(0) 
} 

aber ich sehe, dass, sobald die Animation beginnt die Geschwindigkeit ist sehr langsam und dann steigt es. Wenn die Animation beendet wird (wenn die Zeitschaltuhrbreite nahe bei 0 ist), verlangsamt sich die Animation erneut. Ich möchte die Geschwindigkeit über die Dauer der Animation gleich sein.

Hat jemand dieses Problem schon einmal gehabt? Jede Hilfe wird geschätzt! Danke

Antwort

-1

Ich machte ein einfaches Beispiel für den Timer, den ich mit Core Graphics in der WatchOS2-App animieren wollte. Sie können das Projekt here

UPDATE finden: Hier ist der Code, den ich gemacht:

func configureTimerWithCounter(counter: Double) { 

    let size = CGSizeMake(self.contentFrame.width, 6) 
    UIGraphicsBeginImageContext(size) 
    let context = UIGraphicsGetCurrentContext() 
    UIGraphicsPushContext(context!) 

    // Draw line 
    let path = UIBezierPath() 
    path.lineWidth = 100 

    path.moveToPoint(CGPoint(x: 0, y: 0)) 

    let counterPosition = (self.contentFrame.width/30)*CGFloat(counter) 
    path.addLineToPoint(CGPoint(x: counterPosition, y: 0)) 

    UIColor.greenColor().setStroke() 
    UIColor.whiteColor().setFill() 
    path.stroke() 
    path.fill() 

    // Convert to UIImage 
    let cgimage = CGBitmapContextCreateImage(context); 
    let uiimage = UIImage(CGImage: cgimage!) 

    // End the graphics context 
    UIGraphicsPopContext() 
    UIGraphicsEndImageContext() 

    self.timerImage.setImage(uiimage) 

} 
1

WatchOS 2 bietet keine Möglichkeit, eine Timing-Funktion anzugeben, daher beschränkt sich die Animation auf die Verwendung der EaseInEaseOut-Kurve (die langsam beginnt, schneller wird und am Ende langsamer wird).

Sie könnten versuchen using Core Graphics to render the line, oder verwenden Sie eine Reihe von WKInterfaceImage-Frames, um die Linie reibungslos zu animieren.