Swift中的PureLayout与Cocoapods

时间:2015-06-08 21:06:35

标签: ios swift cocoapods pure-layout

使用 cocoapods-0.37.2 以下是我的Podfile

platform :ios, "8.0"
use_frameworks!

pod "GoogleMaps"
pod 'FontAwesomeKit'
pod 'PureLayout'

我正在尝试在我的.swift文件中导入PureLayout,如下所示:

import PureLayout

class ViewController: UIViewController {
...

但我得到错误:

  

没有这样的模块'PureLayout'

为什么???我认为Cocoapods在使用-Bridging-Header.h

时会自行创建use_frameworks!

3 个答案:

答案 0 :(得分:2)

我没有使用use_framework选项,但我在Swift中使用PureLayout和CocoaPods没有问题。

  • 我的Podfile只有一行pod 'PureLayout'
  • 我自己按照Apple here的指示创建了<Your Module>-Bridging-Header.h文件。我添加了一行#import "PureLayout.h"。我还更新了目标构建设置,以根据说明输入桥接头文件名。
  • 在我想使用PureLayout的.swift文件中,我没有需要import PureLayout。如你所说,它会给我一个错误。自动布局调用将起作用,因为它是通过桥接头定义的。

一个侧面点 - 如果您将桥接头文件添加到其构建设置,则测试目标将无法编译。因此,请确保在目标而非项目级别上完成桥接标头更新。

我猜PureLayout github页面中的当前README有点过时了,因为它当前要求你在.swift文件中执行import PureLayout。我也在this README enhancement issue添加了评论。

答案 1 :(得分:1)

  1. 安装podfile
  2. 打开您的.xcworkspace
  3. 将您的override func viewDidLayoutSubviews() { self.searchController.searchBar.sizeToFit() } 语句放入,获取错误
  4. 删除声明
  5. 清洁您的产品
  6. 构建您的产品
  7. 将您的import PureLayout声明放回
  8. 这在使用外部框架时已经很常见了。

答案 2 :(得分:1)

spacemonkey 的方法适用于我。在这种情况下,您甚至不需要-Bridging-Header.h个文件。

对于FontAwesomeKit,由于它包含一些资源文件( xx.ttf xx.otf 等),您应该将此文件添加到项目中以使其工作。如下面的节目:enter image description here

清理项目并重新编译,然后就完成了。

以下是我的演示:

import FontAwesomeKit
import ChameleonFramework
import SnapKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let iconSize : CGFloat = 128;
        let codeIcon = FAKFontAwesome.codepenIconWithSize(iconSize);

        imageView.image = codeIcon.imageWithSize(CGSizeMake(iconSize, iconSize));

        view.backgroundColor = UIColor.flatGreenColorDark();
    }
}

PS。由于您使用swift,因此SnapKit布局框架可能比PureLayout更合适。