对于我们的项目,我们总是为两个平台使用一个源文件:iOS和OS X.现在我正在迁移到swift.不幸的是,有一些文件需要
import Cocoa
Run Code Online (Sandbox Code Playgroud)
在iOS上
import UIKit
Run Code Online (Sandbox Code Playgroud)
以前我们做过
#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
#import <Cocoa/Cocoa.h>
#else
#import <UIKit/UIKit.h>
#endif
Run Code Online (Sandbox Code Playgroud)
你知道如何在swift中完成这项工作吗?我不喜欢每次写两次因为没有宏了.
提前致谢
插口
我有一个使用合成和一些 AVAssets 的自定义播放器。一切正常。现在我想在我的视频上添加一些字幕。我在文档中读到,存在 mediaType“AVMediaTypeSubtitle”。是否有任何 Asset 或 AVAssetTrack 可以生成 TextOverlay,我可以将其插入到我的作品中以制作字幕?
我根据自动布局有一个简单的问题。也许我错过了一些东西,但自从两个小时以来,我试图将 3 个视图彼此相邻且宽度相同。我的目标是每个视图使用 1/3 的屏幕。自动旋转后,所有视图都应具有相同的宽度,但所有相邻的视图应具有父视图的总宽度。
我的想法是这样的:

以编程方式执行此操作很容易。是否可以仅使用界面生成器来解决此任务?
我正在使用Sprite Kit开发游戏.由于iOS9 SpriteKit使用Metal作为着色器后端.SK和着色器效果很好.但如果我在iPad2上进行测试,它就不再适用了.我已经读过这个问题并且知道iPad2不支持Metal.现在我想回到开放GL以在这种情况下提供GLES着色器.
我可以通过编程方式测试"Metal"是否可用(Swift 2):
/**
Returns true if the executing device supports metal.
*/
var metalAvailable:Bool {
get {
struct Static {
static var metalAvailable : Bool = false
static var metalNeedsToBeTested : Bool = true
}
if Static.metalNeedsToBeTested {
let device = MTLCreateSystemDefaultDevice()
Static.metalAvailable = (device != nil)
}
return Static.metalAvailable
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以在应用程序的plist中设置兼容模式:
在这种情况下,SpriteKit总是使用openGL.这不是我想要使用的.我希望我的应用程序始终使用金属,如果没有检测到金属设备,则回退到openGL.
SpriteKit或UIKit中的任何选项,还是API中的某个地方,我可以通过编程方式切换到"PrefersOpenGL"选项?
提前致谢,
插口
autolayout ×1
avfoundation ×1
cocoa-touch ×1
import ×1
ios ×1
ios4 ×1
ipad-2 ×1
macros ×1
metal ×1
opengl-es ×1
preprocessor ×1
shader ×1
sprite-kit ×1
swift ×1
xcode6 ×1