meterscao / Hotpot

一个轻量的 iOS 布局辅助框架。
MIT License
43 stars 4 forks source link

Add some support for Swift #2

Closed R0uter closed 6 years ago

R0uter commented 6 years ago

Hotpot 太棒了,完美解决了我不喜欢 autolayout 但又嫌弃 frame 繁琐的问题……

不过我使用 Swift 开发,在使用 Hotpot 的时候遇到一个问题:

themeButton.frameLayout { (layout) in
            layout?.top.equalTo()(self.view.top)?.offset()(self.view.layoutMargins.top)
        }

这样的语法太难受了,于是我写了一个扩展来避免这些问题:

import Hotpot
extension HotpotFrameLayout {
    @discardableResult func equalTo(_ to:CGFloat) ->HotpotFrameLayout {
        return self.equalTo()(to)!
    }
    @discardableResult func offset(_ n:CGFloat) ->HotpotFrameLayout {
        return self.offset()(n)!
    }
}

虽然本质上还是 Objective-C 实现,但在 Swift 语法中使用起来也没什么明显的问题了呢。

优化后的语法:

themeButton.frameLayout { (layout) in
            layout?.top.equalTo(self.view.top).offset(self.view.layoutMargins.top)
        }
R0uter commented 6 years ago

另外我将尝试把这个框架翻译为 Swift 版本 emmmm

meterscao commented 6 years ago

很开心能派上丁点用场,因为项目(历史遗留)原因我们只使用OC作为主要的开发语言,所以当时仅做了OC的版本,非常感谢你能帮助完善

R0uter commented 6 years ago

已经翻译完成了,但需要你在这边创建个分支?然后我pr过来。 然后你看心情测试一波上的 Swift 版本的pod?

meterscao commented 6 years ago

赞,我已经创建好了一个branch,不过我现在已经不再进行 iOS 客户端的开发了,Swift的测试请你帮忙把关。 因为确实很久没在维护这个rep,我把你加为开发伙伴了。

R0uter commented 6 years ago

666, 那我就试试看了!嘿嘿嘿。

meterscao commented 6 years ago

非常感谢,已经看到readme里面有标注