小编Dan*_*e P的帖子

从Swift 4获取字符串新的密钥路径语法?

如何从Swift 4智能密钥路径语法中获取字符串值(例如)?在这一点上,我对任何方式都很好奇,如果它很复杂并不重要.\Foo.bar

我喜欢类型信息与智能密钥路径相关联的想法.但并非所有的API和第三方都在那里.

通过编译时验证获取属性名称字符串的旧方法#keyPath().使用Swift 4 #keyPath()你必须声明一个属性@objc,这是我宁愿避免的.

reflection key-value-coding ios swift swift4

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

iOS Auto Layout vs Springs&Struts

一年前,我看过几个关于Auto Layout优点的Apple WWDC主题演讲,但是当我在真实世界的项目中尝试它们时,我体验到当你在Storyboard上移动一些UI元素时,它会打破一半的约束,消除了自动布局的所有好处.

到目前为止,我已经非常成功地使用了Springs&Struts,并且结合KVO观察框架路径进行查看,只需几行代码即可优雅地处理大部分旋转重新调整.

所以现在iOS 7问世,我得到一个问题:我是否可以成功地仅针对iOS 7应用程序使用Springs&Struts并避免使用自动布局?或者我这样做会失去什么?学习和掌握在不同情况下使用自动布局的技巧可能需要几天时间,所以我真的很感激一些有争议的建议.


解决:感谢Max的回答,我开始深入研究Auto Layout; 虽然Null他的回答是正确的 - 你实际上可以在iOS 7上使用Springs&Struts而不会有太多麻烦,Auto-Layout功能强大.

显然在Xcode 5中,修复了以下内容:

  • 要删除一个约束,你实际上不需要进行古老的萨满雨之舞.您将其删除并且布局进入警告模式,指示您需要解决的问题才能使自动布局工作.

  • 当你移动东西时,你的约束不会改变; 仅在Interface Builder中查看框架更改.

  • 当Interface Builder中的框架实际上与使用布局约束框架计算的框架不同时,Interface Builder将使用红色虚线指示该元素的运行时框架.最后它是正确的.谢谢,Apple.

  • 这是WWDC 2013会话的链接,演示如何在Xcode 5中利用所有这些.您需要Apple开发者帐户才能查看.

所以我现在的选择是自动布局.谢谢大家.

autolayout ios7

22
推荐指数
1
解决办法
1万
查看次数

snapshotViewAfterScreenUpdates iOS 8上的故障

我注意到运行这会导致视图(或主窗口,不确定)调整片刻,当在iPhone 5/6 +模拟器上运行时,从iPhone 5布局缩放(不通过iPhone 6/6 +的启动图像):

[self.view snapshotViewAfterScreenUpdates:YES];
Run Code Online (Sandbox Code Playgroud)

当你不能在那里传递'NO'时,有什么想法让它工作吗?

更新(7月13日):
似乎不再在iOS 8.4上重现.

objective-c ios ios8 iphone-6 ios8.4

21
推荐指数
1
解决办法
9190
查看次数

使用Swift Package Manager抑制来自依赖项的警告

假设我在Package.swift下面有这样的,并且SomePackage从依赖关系中产生警告swift build.

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "my-app",
    dependencies: [
        .package(url: "https://some-package.git", .upToNextMajor(from: "1.0"))
    ],
    targets: [
        .target(name: "Run", dependencies: ["SomePackage"]
    ]
)
Run Code Online (Sandbox Code Playgroud)

如何从依赖项中抑制这些警告,但保留那些来自我的代码的警告?

swift swift-package-manager

6
推荐指数
3
解决办法
554
查看次数

iOS硬件音量按钮 - 告诉按下按钮

好吧,有很多关于为自己的目的使用iphone硬件音量按钮的问题(例如相机快门); 我所看到的都是基于接收音量变化通知.

我需要区分音量按钮按下和保持/释放.当然可以基于音量变化通知来实现,如下所示:On volume change event, if there's another event coming shortly - that's a hold (or quick double press); if no event is coming within e.g. half a second that's a button press.

但.有一个名为Snapchat的应用程序; 他们使用音量按钮按下拍照,按住音量按钮可在按住时录制视频.这个应用程序完美地告诉媒体保持 - 意味着新闻事件立即被识别,而不是在半秒内.

所以问题是他们是如何做到的?

hardware iphone volume ios

5
推荐指数
0
解决办法
289
查看次数

CGAffineTransform 连接两个矩阵与将一个矩阵应用于另一个矩阵

在下面的这个例子中,为什么第一个矩阵等于第三个,而不是第二个?

let t1 = CGAffineTransform(scaleX: 2, y: 2)
    .concatenating(CGAffineTransform(translationX: 50, y: 50))

let t2 = CGAffineTransform(scaleX: 2, y: 2).translatedBy(x: 50, y: 50)

let t3 = CGAffineTransform(translationX: 50, y: 50).scaledBy(x: 2, y: 2)
Run Code Online (Sandbox Code Playgroud)

cgaffinetransform swift

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

if-let Any 到 RawRepresentable<String>

让我们假设:

enum MyEnum: String { case value }
let possibleEnum: Any = MyEnum.value
if let str = stringFromPossibleEnum(possibleEnum: possibleEnum)
Run Code Online (Sandbox Code Playgroud)

stringFromPossibleEnum不知道枚举类型名称的情况下实现的最佳选择是什么?

func stringFromPossibleEnum(possibleEnum: Any) -> String? {
//    how should this be implemented without knowing enum type name?
}
Run Code Online (Sandbox Code Playgroud)

UPD:好的,越来越好,有了这个我可以判断是否possibleEnum是一个枚举:

if Mirror(reflecting: possibleEnum).displayStyle == .enum { print("yes!") }
Run Code Online (Sandbox Code Playgroud)

但是如何判断这是否是String基于枚举的?

UPD: 这条推文表明你可以rawValue从 Enum 中获得Any 。然后你可以检查它是否rawValueString. 但如何rawValueMirror

generics swift swift-protocols

3
推荐指数
1
解决办法
1383
查看次数

Apple appstore和国家/地区

我正在研究以下问题,到目前为止还没有多少问题能够实现.希望你能帮助我理解.

  1. 假设一个应用程序发布到美国应用程序商店; 俄罗斯应用商店设置的用户能够下载吗?
  2. 假设一个应用程序发布到俄罗斯appstore; 拥有美国应用商店设置的用户能够下载吗?
  3. 是否存在全局可用性这样的事情,或者是否应该将应用程序提交到应该可用的每个商店?
  4. 俄罗斯本地化与向俄罗斯应用商店提交应用版本有何不同?
  5. 提交专为非英语听众设计的应用程序(在我的情况下是俄语)的最佳做法是什么?

我愿意阅读相关的相关手册,如果你知道,请指出我.

localization app-store ios

2
推荐指数
1
解决办法
7476
查看次数

Vapor的crypto.json - 部署安全吗?

我看到vapor,这crypto.json是用任何项目创建的一部分vapor toolbelt

{
    "hash": {
        "method": "sha256",
        "key": "password"
    },
    "cipher": {
        "method": "chacha20",
        "key": "passwordpasswordpasswordpassword",
        "iv": "password"
    }
}
Run Code Online (Sandbox Code Playgroud)

是否应更新任何部署?

encryption swift vapor

2
推荐指数
1
解决办法
492
查看次数