Graphical UIView Animation

Asked 2 years ago, Updated 2 years ago, 134 views

I want to create a circular view so that the color of the border line is repeated endlessly from red to blue and from blue to red.
The following method changes from red to blue, but it stops and does not repeat itself.
I have included [UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.Repeat] in the options, so I thought there was no problem.
Is there anything missing?

 // Make it circular at this point
    button.layer.cornerRadius=button.frame.size.width/2;
    button.layer.masksToBounds = true;
    // borderline
    button.layer.borderWidth=5.0;
    // border color
    button.layer.borderColor=UIColor.redColor().CGColor
    UIView.animateWithDuration(1, delay:1, options:[UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.Repeat], animations:{()->Void in
        self.button.layer.borderColor=UIColor.blueColor().CGColor
        }, completion: {_in
            self.button.layer.borderColor=UIColor.redColor().CGColor
    })

swift ios objective-c swift2

2022-09-30 21:18

1 Answers

I tried copying and modifying the code, but the color of self.button.layer.borderColor did not change in animation.
When I added an animation to move the view and an animation to change the background, it seems that it can be played repeatedly.
I will list the modified code for your reference.

 // Make it circular at this point
    self.button.layer.cornerRadius=button.frame.size.width/2;
    self.button.layer.masksToBounds=true;
    // borderline
    self.button.layer.borderWidth=5.0;
    // border color
    self.button.layer.borderColor=UIColor.greenColor().CGColor

    // Specify initial location
    button.layer.position = CGPoint (x:self.view.frame.width/2, y:200)
    // Specify background color
    self.button.backgroundColor=UIColor.orangeColor()

    UIView.animateWithDuration(1, delay:1, options:[UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.Repeat], animations:{()->Void in
        self.button.layer.borderColor=UIColor.blueColor().CGColor
        // Move Animation
        self.button.layer.position = CGPoint (x:self.view.frame.width/2, y:500)
        // Background animation
        self.button.backgroundColor=UIColor.greenColor()

    }, completion: {_in
        // self.button.layer.borderColor=UIColor.redColor().CGColor
    })

According to the URL below, the borderColor of CaLayer cannot be animated in UI/animation.
http://qiita.com/ShingoFukuyama/items/66d2ca049e15bd340538

What do you think about the border being blue from the beginning without animation?
There seems to be a separate solution to the above URL, so why don't you refer to it?

XCode version is 7.3.1 (7D1014), iPad 4th, iOS 9.3.2 (13F69) verified.


2022-09-30 21:18

If you have any answers or tips


© 2024 OneMinuteCode. All rights reserved.