在我提出问题之前的一个注意事项,以避免被标记为欺骗:我看了一遍。很多类似主题的问题都在Objective-C中,并使用Objective-C宏来解决这个问题。
简要说明:
UIColor
是iOS定义颜色的方式,NSColor
是Mac OS的方式。原因是,它必须处理Apple和Objective-C背后的历史。
我想为iOS和Mac OS X制作游戏。我在Swift中制作了一个Xcode项目,其中包含iOS和Mac OS X的构建目标。
游戏的一个组成部分是能够使用/操纵颜色,无论是用于设置背景,以编程方式绘制精灵/渐变,绘制形状......还有更多。
我的问题始于我必须使用NSColor
用于Mac而UIColor
用于iOS。
我尝试创建一个类Color
,它是两个构建目标的一部分。我还有一个类ColorExtension
,其中Color
个子类,在Mac OS上是NSColor
的子类,在iOS上是UIColor
。
结果是,我能够使用诸如Color.yellowColor()
之类的方法。但是,当我必须使用Color
的便利初始化程序(例如
Color(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
那些便利初始化器不会继承1>} Color
类,所以当我尝试做类似的事情时,我会遇到各种问题。
我希望能够使用这些方便的初始化程序,这样我就可以使用数百万种颜色渲染颜色,而不仅仅是易于使用的颜色。
我已经在iOS上看到了Objective-C宏#define
UIColor
,在Mac上看到了NSColor
this code:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif
但是,Swift不支持Objective-C宏,所以这样就不行了。
到目前为止我的代码用于定义颜色:
Color
import Foundation
import SpriteKit // only imported so I can try out stuff
class Color : ColorExtension {
}
ColorExtension
(Mac)import Foundation
import AppKit
class ColorExtension : NSColor {
}
ColorExtension
(iOS)import Foundation
import UIKit
class ColorExtension : UIColor {
}