提前为 newb 问题道歉(在 SO 上的其他地方找不到),但是有没有人在初始化任何和/或所有 ARKit 演示时遇到问题?
举个例子,默认的/vanilla 应用程序——当你创建一个空的 ARKit 项目时你会得到什么。我看到的是飞船悬停在默认视口上方,当我平移时,它几乎保持在视口的中心,而不是固定在空间中,我无法在飞船上方或两侧移动。当我查看 cameraDidChangeTrackingState 中的相机状态属性时,它显示“受限/初始化,但永远不会改变。我觉得我必须遗漏一些明显的东西,比如权利 - 或其他一些设备级别设置?
func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) {
switch camera.trackingState {
case .notAvailable:
print("Tracking: not available: \(camera.trackingState)")
case .limited(let reason):
print("Tracking limited: \(reason)") <-- only gets here, with "initializing"
case .normal:
print("tracking normal: \(camera.trackingState)")
}
}
Run Code Online (Sandbox Code Playgroud)
就其价值而言,我使用的是 Xcode 9.0 和 iPhone 8。
谢谢!
我正在使用Cocoapods预发布0.36来构建私有动态框架并将其部署到应用程序包中.我使用resources属性来复制xibs,它们出现在app bundle中.
s.subspec 'Views' do |ss|
...
ss.resources = ['All/My/Folders/**/*.{xib,png}']
...
Run Code Online (Sandbox Code Playgroud)
我试图从xib加载可重用的控件,如下所示:
NSBundle.mainBundle().loadNibNamed("MyXib", owner:loader, options:nil)
但这是失败的,因为它无法在我的嵌入式子框架中找到xib.实际的xib(nib)路径遵循以下模式:'
./Frameworks/MyPrivateFramework.framework/MyXib.nib
我的问题是,是否有一种简单的,代码无关的加载xib的方式,当在iOS 8框架中打包时它将起作用 - 或者我是否必须在上述路径中明确硬编码?上面的加载代码工作,直到我认为动态框架发生了变化.
谢谢
我试着编写一个"编辑器"类,它可以保留对不同对象上的属性的引用,以便以后进行突变.我首先编写了编辑器类来接收一个用于读取的闭包,以及一个用于写入的闭包.这很有效.然后我尝试通过(inout)引用传递有问题的参数,然后从中生成getter/setter对.这没用.Swift文档确实说(释义)Swift确定何时复制,何时不复制.我认为我反对这种限制的不可预测性,但我认为我提出的问题是一样的.
或者,是否可以为个人吸气剂和定位器获得咖喱功能?
我的代码是:
class SomeModel : Printable {
var a:String
init(a:String) {
self.a = a
}
var description:String {
return "\(self.a)"
}
}
class Editor {
var getter:()-> String
var setter:(String)->()
init(getter:()-> String, setter:(String)->()) {
self.getter = getter
self.setter = setter
}
convenience init(inout bindTo:String) {
self.init(
getter:{ return bindTo },
setter: { v in bindTo = v })
}
func read() -> String {
return self.getter()
}
func write(value:String) {
self.setter(value)
}
}
func testBindTo() {
var readModel = …
Run Code Online (Sandbox Code Playgroud) 使用Core Text获取给定文本行的边界的最简单准确方法是什么?
我尝试了多种技术,但结果不一致.
我一直试图弄清楚如何找到现在的实际界限,一行文本.
核心文本文档最多不完整是关于帧,行和运行级别例程返回的内容,说明它们返回"实际"边界,当它们实际上不同意时(至少在帧级别上),并且不返回特定字符串的实际边界,但似乎返回的大小大于预测的字体大小.
然而,当我得到单个字形的边界时,我确实看到了不同字符之间的差异,向我建议这是唯一准确的方法(迭代所有字形,找到它们的有效结合).
我在一个操场文件中写了一些测试,我错过了一些明显的东西吗?我的最终目标(部分/大部分有效)是使用自定义CALayer获取属性字符串,并对其进行缩放以填充整个边界.然后,这可以很好地与自动布局一起使用,因为我可以根据需要创建一个可以根据我的布局进行缩放的标签.
我的游乐场代码段位于下方,请注意右栏中生成的值.
// Playground - noun: a place where people can play
import UIKit
import CoreText
import QuartzCore
print("start")
let f = UIFont.systemFontOfSize(12)
let t = NSAttributedString(string: "A", attributes: [NSFontAttributeName:f])
let line = CTLineCreateWithAttributedString(t)
var ascent:CGFloat = 0, descent:CGFloat = 0, leading:CGFloat = 0
CTLineGetTypographicBounds(line, &ascent, &descent, &leading)
ascent
descent
ascent + descent
leading
let boundingSize = CGSizeMake(CGFloat.max, CGFloat.max)
let fs = CTFramesetterCreateWithAttributedString(t)
let frameSize = CTFramesetterSuggestFrameSizeWithConstraints(fs, CFRangeMake(0, t.length),
nil, boundingSize, …
Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的库来序列化模型数据,后来意识到我只是在读取时才对数据进行写入。我能够将问题简化为以下游乐场片段:
class Foo {
init() { name = "test" }
var name:String { didSet { print("setting name: \(self.name)") }}
}
func map(inout foo:String) {
print("writing value: \(foo)")
}
var foo:Foo = Foo()
map(&foo.name)
Run Code Online (Sandbox Code Playgroud)
结果(对我来说)出乎意料:
写入值:测试
设置名称:测试
我重新阅读了有关inout
参数的部分,但没有看到明确提及复制语义。我的预感是,如果没有其他代码这样做,编译器期望该值被覆盖,并使用初始值自行执行此操作。
这似乎是预期的,还是编译器错误?以我的拙见,这是不直观的行为。我并不期待任务,除非它源自我的代码 - 但事实并非如此。
为了说明什么是显而易见的,上面的代码片段不需要 inout 参数,但我一直在使用通用接口进行读写。
XCode 6:Beta 5:
目标:
我正在尝试为语义兼容但不共享(或似乎共享)足够的协议的类型编写通用代码,以便将我的泛型基于共享协议的子集.到目前为止,我还没有找到解决方案,并且想知道我错过了什么或者是否是语言的限制 - 任何见解都值得赞赏.
问题:
我有一些函数只是按类型而不是语义而有所不同,看起来非常适合泛型.我所遇到的问题是,从我所知道的情况来看,Swift看起来像是仿制药的解析时绑定,如果可能存在问题则失败,而不是实际存在问题时.
例:
在一个人为的例子中考虑以下通用函数:
func defVal<T where T:FloatingPointType, T:FloatLiteralConvertible>(T.Type) -> T {
return 0.0
}
func defVal<T:IntegerLiteralConvertible>(T.Type) -> T {
return 0
}
Run Code Online (Sandbox Code Playgroud)
请注意,我提供的函数应该跨越整数和浮点数的情况,并且故意不想提供与我无关的所有可能变体的详尽列表.
然后我想定义跨越类型的通用代码 - 在本例中,int和float类型.请注意,即使没有任何调用它的代码,此代码也无法编译:
func doSomethingGeneric<T>(t:T) -> [T]
{
let a = defVal(T) // Type 'T' does not conform to protocol FloatLiteralConvertible
let b = a * a // works
return [t]
}
Run Code Online (Sandbox Code Playgroud)
在我的回忆中,这将在C++中编译,直到您使用不兼容的类型调用它,此时编译器将捕获它.
我还尝试了其他减少效用的变体:
func doSomethingWithFloats<T
where T:FloatingPointType, T:FloatLiteralConvertible>(t:T) -> [T]
{
let a = defVal(T) // works
let …
Run Code Online (Sandbox Code Playgroud) 我对鱼壳很新,并且在OS X Yosemite上配置有困难.
特别是,我可以运行fish_config并设置前景色,但不能设置背景色.使用Mac终端应用程序和iTerm2时都是如此.
是否能够设置背景预期行为?fish_config是否能很好地干扰哦我的鱼?(我目前没有安装它).
谢谢!