psh*_*rma 3 objective-c ios swift
下面,我有一个Objective-c代码用于火种风格的动画效果,灵感来自 - https://github.com/ngutman/TinderLikeAnimations/tree/master/TinderLikeAnimations.
Objective-C的
typedef NS_ENUM(NSUInteger , GGOverlayViewMode) {
GGOverlayViewModeLeft,
GGOverlayViewModeRight
};
- (void)setMode:(GGOverlayViewMode)mode
{
if (_mode == mode) return;
_mode = mode;
if (mode == GGOverlayViewModeLeft) {
self.imageView.image = [UIImage imageNamed:@"button1"];
} else {
self.imageView.image = [UIImage imageNamed:@"button2"];
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在swift中复制相同的内容.这就是我在swift中所拥有的 -
enum GGOverlayViewMode : Int {
case GGOverlayViewModeLeft
case GGOverlayViewModeRight
}
func setMode(mode: GGOverlayViewMode){
// if (_ mode == mode) {
// return
// }
//
// _mode = mode;
if(mode == GGOverlayViewMode.GGOverlayViewModeLeft) {
imageView.image = UIImage(named: "button1")
} else {
imageView.image = UIImage(named: "button2")
}
}
Run Code Online (Sandbox Code Playgroud)
但不知怎的,我在这里如何处理typdef没有意义.
任何帮助表示赞赏.
谢谢
在Swift中,每个枚举都有自己的成员值,因此您不必像(Objective-)C那样为它们提供唯一的前缀.典型的定义是
enum GGOverlayViewMode {
case Left
case Right
}
Run Code Online (Sandbox Code Playgroud)
此外,您不必指定基础"原始类型"(例如Int),除非您有其他理由这样做.
您将实现属性观察器,而不是自定义setter方法.
didSet在存储新值后立即调用,并且具有oldValue包含旧属性值的隐式参数:
var mode : GGOverlayViewMode = .Right {
didSet {
if mode != oldValue {
switch mode {
case .Left :
imageView.image = UIImage(named: "button1")
case .Right:
imageView.image = UIImage(named: "button2")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3203 次 |
| 最近记录: |