小编Zap*_*hod的帖子

iOS 9:警告"必须支持所有界面方向,除非应用程序需要全屏"才能使用通用应用程序

我正在开发一款通用的应用程序,可以在iPad上使用所有方向,在iPhone 上使用肖像.该应用程序适用于iOS 9兼容iPad上的分屏多任务,但我有这样的警告:

All interface orientations must be supported unless the app requires full screen
Run Code Online (Sandbox Code Playgroud)

我的应用程序不需要全屏.它仅限于iPhone上的肖像......不应该没问题吗?有没有办法只在iPhone上声明需要全屏

提前致谢

顺便说一下,我正在使用Xcode 7.3.1

iphone xcode multitasking ipad ios

44
推荐指数
3
解决办法
2万
查看次数

Swift 3中的十进制到双精度转换

我正在将一个项目从Swift 2.2迁移到Swift 3,我试图在可能的情况下摆脱旧的Cocoa数据类型.

我的问题在这里:迁移NSDecimalNumberDecimal.

我用来桥接NSDecimalNumberDouble这两种方式雨燕2.2:

let double = 3.14
let decimalNumber = NSDecimalNumber(value: double)

let doubleFromDecimal = decimalNumber.doubleValue
Run Code Online (Sandbox Code Playgroud)

现在,切换到Swift 3:

let double = 3.14
let decimal = Decimal(double)

let doubleFromDecimal = ???
Run Code Online (Sandbox Code Playgroud)

decimal.doubleValue不存在,Double(decimal)甚至不存在decimal as Double......我想出的唯一一个黑客是:

let doubleFromDecimal = (decimal as NSDecimalNumber).doubleValue
Run Code Online (Sandbox Code Playgroud)

但是试图摆脱NSDecimalNumber它并且必须偶尔使用它将是完全愚蠢的......

好吧,要么我错过了一些明显的东西,请原谅浪费你的时间,或者在我看来需要解决一个漏洞......

在此先感谢您的帮助.

编辑:在Swift 4上没有关于这个主题的更多信息.

migration type-conversion ios swift swift3

29
推荐指数
5
解决办法
2万
查看次数

如何在 SwiftUI 中删除或隐藏 Toggle 的标签

我正在寻找一种方法来删除ToggleSwiftUI中 a 的标签...

我试过,ToggleStyle但似乎不是正确的方法:

Toggle(isOn: $isBlinky) {
    Text("DO NOT DISPLAY").color(.red)
}
.toggleStyle(.switch)
Run Code Online (Sandbox Code Playgroud)

由于标签似乎包含在类型本身 ( struct Toggle<Label>) 中,因此可能无法单独使用开关...

顺便说一句,如果我使用Text("")然后scaledToFit()开关仍然在右侧并且没有真正居中......

无论如何,如果有人有想法!

PS:在等待解决方案时,我包装了一个很好的旧UISwitch,但这不是这个想法......

struct Switch : UIViewRepresentable {
    @Binding var isOn : Bool

    func makeUIView(context: Context) -> UISwitch {
        let uiView = UISwitch()
        uiView.addTarget(
            context.coordinator,
            action: #selector(Coordinator.didChange(sender:)),
            for: .valueChanged)

        return uiView
    }

    func updateUIView(_ uiView: UISwitch, context: Context) {
        uiView.isOn = isOn
    }

    // MARK:- Coordinator

    func makeCoordinator() -> Switch.Coordinator { …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

15
推荐指数
2
解决办法
8369
查看次数

iOS13模拟器上的UIDocumentBrowserViewController错误“无法为URL创建urlWrapper”

UIDocumentBrowserViewController在iOS 13上进行测试时,我遇到了一个非常奇怪的问题。importHandler(newDocumentURL, .move)似乎无缘无故地崩溃了:

[DocumentManager] Cannot create urlWrapper for url file:///.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt. 
error Error Domain=NSPOSIXErrorDomain Code=22 "couldn't issue sandbox extension com.apple.app-sandbox.read-write for '/.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt': 
Invalid argument" UserInfo={NSDescription=couldn't issue sandbox extension com.apple.app-sandbox.read-write for '/.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt': Invalid argument}.
Run Code Online (Sandbox Code Playgroud)

这是一个复制的两步过程:

  • 创建一个新的Xcode项目“基于文档的应用程序”
  • documentBrowser(_: , didRequestDocumentCreationWithHandler:)

    let newDocumentURL: URL? =
        URL(fileURLWithPath: NSTemporaryDirectory())
            .appendingPathComponent(UUID().uuidString)
            .appendingPathExtension("txt")
    
    // Set the URL for the new document here. Optionally, you can present a template chooser before calling the importHandler.
    // Make sure the importHandler is always called, even if the …
    Run Code Online (Sandbox Code Playgroud)

ios xcode10 ios13 xcode11

8
推荐指数
1
解决办法
539
查看次数

tvOS UITabBarController开始没有重点

我有一个简单的tvOS应用程序以a开头,UITabBarController我希望主视图在应用程序启动时具有焦点,而不是标签栏.

我试过玩self.tabBarController.tabBar.userInteractionEnabled暂时移除焦点,但徒劳无功.(除此之外我不喜欢那种解决方法)

任何线索?

提前致谢.

focus uitabbarcontroller uitabbar tvos

7
推荐指数
2
解决办法
3383
查看次数

Xcode 7 UI测试目标语言环境和区域设置

我正在尝试设置我的UI测试目标的语言和区域,不幸的是它似乎不起作用.

我试过两种方式,首先:

  • 产品| 方案| 编辑方案
  • 运行| 选项
    • 应用语言:法语
    • 应用地区:法国
  • 测试| 参数
    • 使用Run操作的参数和环境变量:已选中

我试着用另一种方式:

  • 产品| 方案| 编辑方案
  • 测试| 参数
    • 使用Run操作的参数和环境变量:未选中
    • 发布时通过的论据:
      • -AppleLanguages (French)
      • -AppleLocale fr_FR

导致UI测试的每种方式仍然以英语发生.而且,当我按下录音按钮时,它会以法语运行...

所以,如果我做错了什么,我很乐意知道!

提前致谢!

xcode localization ui-testing ios xcode-ui-testing

7
推荐指数
1
解决办法
2234
查看次数

Swift 2.2中的自定义模式匹配无法按预期工作

按照优秀的博客文章:https://appventure.me/2015/08/20/swift-pattern-matching-in-detail/#sec-3-7我尝试过自定义模式匹配.让我们定义一个enum代表两种字符串:

enum LineType : String {
    case Event = "event:"
    case Data = "data:"
}
Run Code Online (Sandbox Code Playgroud)

接下来,一个String扩展能够告诉字符串是否以以下一个或另一个值开头LineType:

extension String {
    func isOfType(type: LineType) -> Bool {
        return self.hasPrefix(type.rawValue)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是自定义模式匹配函数,检查字符串是否属于给定类型:

func ~= (pattern: LineType, value: String) -> Bool {
    return value.isOfType(pattern)
}
Run Code Online (Sandbox Code Playgroud)

最后,让我们用这个例子来测试它:

let testLine = "event:yada-yada-yada"

switch testLine {
case _ where testLine.characters.count == 0:
    print("Empty")
case LineType.Event: // <--- Causes the error Enum case 'Event' is not a …
Run Code Online (Sandbox Code Playgroud)

pattern-matching switch-statement ios swift swift2

6
推荐指数
1
解决办法
384
查看次数

Xcode 10 - 如何刷新 Siri 快捷方式意图定义文件的本地化?

我有一个 Siri 快捷方式的意图定义文件。当我单击本地化 Xcode 时,可以很好地创建本地化文件,使用的每个字符串都带有一个 ID。但是,如果我在同一个文件中添加了一个新的意图或者只是在同一个文件中添加了一个新的可能响应,我该如何刷新呢?我目前只找到两种方法:

  • 删除本地化并重新设置新的(这会使您丢失所有语言的所有翻译字符串,除了默认)。
  • 导出整个应用程序的所有翻译并重新导入(如果您的完整应用程序尚未准备好进行新的本地化导出/导入,则会导致问题)。

那么,有人知道刷新意图定义文件的自动本地化的方法吗?

localization ios xcode10

5
推荐指数
1
解决办法
820
查看次数

Xcode 11 测试计划似乎没有本地化模拟器状态栏

我使用 Xcode 11 测试计划新功能为应用商店生成本地化屏幕截图。正如 WWDC19 期间所解释的,您可以使用测试计划配置来进行 UI 测试,生成多种语言的屏幕截图。

不幸的是,它似乎只指定应用程序的语言和区域,而不是基于模拟器。

例如,当您使用此配置时:

法式配置

当状态栏显示日期时,该问题尤其出现在 iPad 上:

带有法语应用程序和英语状态栏的 iPad

因此,如果有人知道如何强制模拟器为每个配置更新其语言,我将不胜感激。

PS:我曾经使用过fastlane/snapshot,但测试计划效率更高(5 分钟生成,而不是超过 40 分钟),所以如果可以的话, fastlane我宁愿不回去。fastlane

xcode screenshot ios ios-simulator xctestplan

5
推荐指数
1
解决办法
534
查看次数

Swift 3 中泛型的泛型

我面临一个奇怪的问题,就是:我希望用另一种泛型类型来约束一种泛型类型。

让我解释一下,我有一个简单的泛型类型:

class Simple<T : Equatable> { ... }
Run Code Online (Sandbox Code Playgroud)

我希望对这个简单(通用)类型有另一个通用类型约束:

class Complex<U : Simple> { ... } // WRONG!
Run Code Online (Sandbox Code Playgroud)

当然,这也不能编译:

class Complex<U : Simple<T : Equatable>> { ... } // WRONG!
Run Code Online (Sandbox Code Playgroud)

也不:

class Complex<U : Simple<T>> where T : Equatable { ... } // WRONG!
Run Code Online (Sandbox Code Playgroud)

我发现的唯一方法是:

class Complex<T : Equatable, U : Simple<T>> { ... } 
Run Code Online (Sandbox Code Playgroud)

所以我需要T在每个实例上重复:

let x = Complex<Date, Simple<Date>>()
Run Code Online (Sandbox Code Playgroud)

最糟糕的是,想象一下如果我有这样的事情:

class SimpleThing : Simple<Thing> { ... }
let y = Complex<Thing, SimpleThing>()
Run Code Online (Sandbox Code Playgroud)

我如何声明Complex以这种方式使用它?: …

generics swift swift3

4
推荐指数
1
解决办法
1882
查看次数