来自 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】:

事实上这是不可能的,因为OrientationCGSize 不是类。 OrientationenumCGSizestruct

正如documentation 所说,您不能在Objective-C 中使用这些快速特性:Enumerations defined in Swift without Int raw value typeStructures defined in Swift

【讨论】:

以上是关于来自 Swift 的 CGRect 和 CGSize 扩展在 Objective-C 中不可见的主要内容,如果未能解决你的问题,请参考以下文章

swift 的CGRect + Geometry.swift

Swift:字典键为 CGRect

Swift:使用 CGRect 设置 UIButton 图像

反转 CGRect - Swift

swift CGRect对齐扩展

使用 UIPanGestureRecognizer 从 CGRect 获取 UIView - Swift 2.0