来自 Swift 的 CGRect 和 CGSize 扩展在 Objective-C 中不可见
Posted
技术标签:
【中文标题】来自 Swift 的 CGRect 和 CGSize 扩展在 Objective-C 中不可见【英文标题】:CGRect and CGSize Extensions from Swift Not Visible in Objective-C 【发布时间】:2016-08-16 07:40:50 【问题描述】:我在 Swift 中对一些核心图形结构进行了一些扩展,即 CGSize 和 CGRect,这就是 CGSize 的样子......
enum Orientation
case Portrait
case Landscape
case Square
extension CGSize
/// Based on the size's dimensions, what orientation is it
var orientation: Orientation
if width > height
return .Landscape
else if height > width
return .Portrait
else
return .Square
我需要在 Objective-C 类中使用这些。我已经将 Swift 标头导入到这个类中,我编写的 Swift 的其他扩展也在这个类中工作。但是,这两个是不可见的。我猜这是因为这些不是类的扩展。有没有办法让这些与我的 Objective-C 代码一起工作?
【问题讨论】:
【参考方案1】:事实上这是不可能的,因为Orientation
和CGSize
不是类。 Orientation
是 enum
,CGSize
是 struct
。
正如documentation 所说,您不能在Objective-C 中使用这些快速特性:Enumerations defined in Swift without Int raw value type
和Structures defined in Swift
。
【讨论】:
以上是关于来自 Swift 的 CGRect 和 CGSize 扩展在 Objective-C 中不可见的主要内容,如果未能解决你的问题,请参考以下文章
swift 的CGRect + Geometry.swift