有没有办法将 Objective-C CATransition 动画转换为 Swift?

Is there a way to convert Objective-C CATransition animation into Swift?

提问人:MarisLakss 提问时间:10/18/2022 更新时间:10/18/2022 访问量:73

问:

我正在处理过时和未完成的项目,将 Objective-C 代码迁移到 Swift。 尝试将 UIView+stateTransition .h 和 .m 文件重新创建到 Swift 中,但没有任何运气。如果有人遇到过类似的事情,那么下面的 Objective-C 代码在 Swift 格式中的外观将不胜感激。

//Code in UIView+stateTransition header file:

#import <UIKit/UIKit.h>


NS_ASSUME_NONNULL_BEGIN

@interface UIView (stateTransition)

- (CATransition *)makeStandardStateTransition;

@end

NS_ASSUME_NONNULL_END

//Code in UIView+stateTransition implementation file:

#import "UIView+stateTransition.h"


NS_ASSUME_NONNULL_BEGIN

@implementation UIView (stateTransition)

- (CATransition *)makeStandardStateTransition
{
    CATransition *transition = [CATransition animation];
    transition.duration = 0.12;//based on testing
    transition.type = kCATransitionFade;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    return transition;
}

@end

NS_ASSUME_NONNULL_END
Swift Objective-C UIView 迁移

评论


答:

0赞 Bulat Yakupov 10/18/2022 #1

此代码的 Swift 等效项如下所示:

extension UIView {

    func makeStandardStateTransition() -> CATransition {
        let transition = CATransition()
        transition.duration = 0.12
        transition.type = .fade
        transition.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
        return transition
    }

}