注册 登录
主题 : 图片旋转,swift的问题
级别: 新手上路
UID: 518528
精华: 0
发帖: 45
可可豆: 146 CB
威望: 126 点
在线时间: 165(时)
注册时间: 2015-10-28
最后登录: 2019-05-20
0 楼:  发表于: 2019-05-16 20:41    发自: Web Page
来源于 显示问题 分类

图片旋转,swift的问题   

遇见一个Swift问题,要求一个图片反复切换旋转/停止旋转,使用的是扩展:

//
//  UIImageView+Extension.swift
//  Story
//

import Foundation
import UIKit

extension UIImageView {
    
    // 360度旋转图片
    func rotate360Degree() {
        layer.removeAllAnimations()
        let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z") // 让其在z轴旋转
        rotationAnimation.toValue = NSNumber(value: Double.pi * 2.0) // 旋转角度
        rotationAnimation.duration = 6 // 旋转周期
        rotationAnimation.isCumulative = true // 旋转累加角度
        rotationAnimation.repeatCount = 100000 // 旋转次数
        layer.add(rotationAnimation, forKey: "rotationAnimation")
        print("---开始旋转");
    }
    
    // 停止旋转
    func stopRotate() {
        layer.removeAllAnimations()
        print("---停止旋转");
    }
}





调用使用的通知,调用可以走到以下两个方法,也能走到扩展方法,但是图片旋转暂停经常没有效果,请知道的指导一下:

    @objc private func tabarShowPlay(){
        
        bgImageViewCanRotate.rotate360Degree()//开始旋转
        
        print("---tabarShow-Play");
    }
    
    @objc private func tabarShowNotPlay(){
        
        bgImageViewCanRotate.stopRotate()//停止旋转
        
        print("---tabarShow-NotPlay");
    }


描述:播放按钮下边的图片
图片:1558010324130.jpg
-给我一台电脑,还你一个世界
级别: 新手上路
UID: 518528
精华: 0
发帖: 45
可可豆: 146 CB
威望: 126 点
在线时间: 165(时)
注册时间: 2015-10-28
最后登录: 2019-05-20
1 楼:  发表于: 2019-05-17 14:42    发自: Web Page
自顶
-给我一台电脑,还你一个世界
级别: 新手上路
状态: 连续签到 - [25天]
UID: 535524
精华: 0
发帖: 46
可可豆: 246 CB
威望: 174 点
在线时间: 152(时)
注册时间: 2015-12-31
最后登录: 2019-05-17
2 楼:  发表于: 2019-05-17 16:52    发自: Web Page
这个是我使用的旋转动画! 希望可以帮到你
    func rotate360Degree(){
        let animation1 = CABasicAnimation.init(keyPath: "transform.rotation.z")
        animation1.toValue = NSNumber.init(value: Double.pi * 2)
        animation1.duration = 5
        animation1.repeatCount = 1e100 //无限大重复次数
        self.headimage.layer.add(animation1, forKey: "rotateAnimation") //开始旋转
        self.headimage.layer.resumeAnimation() //继续动画
        self.headimage.layer.pauseAnimation() //暂停动画
    }
--------------我只是个尾巴~~~~~~~~~~~~~
级别: 新手上路
状态: 连续签到 - [25天]
UID: 535524
精华: 0
发帖: 46
可可豆: 246 CB
威望: 174 点
在线时间: 152(时)
注册时间: 2015-12-31
最后登录: 2019-05-17
3 楼:  发表于: 2019-05-17 16:53    发自: Web Page
忘记extension
[ 此帖被崽崽okok在2019-05-17 17:25重新编辑 ]

--------------我只是个尾巴~~~~~~~~~~~~~
级别: 新手上路
状态: 连续签到 - [25天]
UID: 535524
精华: 0
发帖: 46
可可豆: 246 CB
威望: 174 点
在线时间: 152(时)
注册时间: 2015-12-31
最后登录: 2019-05-17
4 楼:  发表于: 2019-05-17 16:54    发自: Web Page
补充下代码
extension CALayer {
    
    //暂停动画
    
func pauseAnimation() {
        
    let pauseTime = convertTime(CACurrentMediaTime(), from: nil)
        
    speed = 0.0
        
    timeOffset = pauseTime
}
    
//恢复动画
    
    func resumeAnimation() {
        
        // 1.取出时间
        
        let pauseTime = timeOffset
    
        // 2.设置动画的属性
        
        speed = 1.0
        
        timeOffset = 0.0
        
        beginTime = 0.0
        
        // 3.设置开始动画
        
        let startTime = convertTime(CACurrentMediaTime(), from: nil) - pauseTime
        
        beginTime = startTime
    }
    
}

--------------我只是个尾巴~~~~~~~~~~~~~
级别: 新手上路
UID: 518528
精华: 0
发帖: 45
可可豆: 146 CB
威望: 126 点
在线时间: 165(时)
注册时间: 2015-10-28
最后登录: 2019-05-20
5 楼:  发表于: 2019-05-18 21:56    发自: Web Page
回 2楼(崽崽okok) 的帖子
还是不行啊,直接怎么都不旋转了。刚开始用swift,能给再具体的代码吗?
-给我一台电脑,还你一个世界

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部