0%

UITableView作为高级控件被开发者广泛使用,同样的,UICollectionView由于其NB的布局也被广泛使用。但是后者在使用的时候大多数都属于自定义的比较多,前者则相对普通,list基本上都用。

在业务需求中,常规布局,大多数都是采用UITableView进行的,但是有痛点:

  • 当使在APP内用过一次瀑布流之后,设计师会突然的让你在正常的list中底部追加瀑布流。。虽然是在底部追加,但是要从UITableView迁移到UICollectionView
  • UITableViewDelegateUITableViewDataSource 恐怕每处使用都要写繁琐的相同的代码吧~
  • 很多人也会对其进行高度缓存啊神马的优化策略
  • 不知不觉这些代码堆在一起已经将UIViewController堆的相当的高

然后呢,我们现在使用一个CollectionView将这些操作包装一下,达到这样一个流程:

  1. 自定义Cell、CellModel

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class LabelCell: UICollectionViewCell {
    let info = UILabel()
    ...
    override func sizeThatFits(_ size: CGSize) -> CGSize {
    ...
    return CGSize(width: size.width, height: info.frame.maxY + info.frame.minY)
    }
    }
    extension LabelCell {
    class Model: ListItemDefaultProtocol {
    var info: String?
    func fillModel(view: LabelCell) {
    view.info.text = info
    }
    }
    }
  2. 请求、处理数据格式化为LabelCell.Model这样的类

  3. 处理好的数据交给CollectionView

    1
    list.sections = model.format(...)
  4. 休息一会,完工了~

然后,来看看Collection里面都做了什么操作

Read more »

每逢升级大版本总要过搞点事情。

1
2
$ pod env
-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

不论是pod envpod update 等等均报上面的错误。

如果Google发现:

事情的缘由就是这样。

#6898中道出了简单直接的解决方案:

for all others:

gem install -n /usr/local/bin cocoapods

fixes it

综合起来解决这个问题是这样的:

1
2
3
4
$ gem update --system
$ gem uninstall cocoapods
$ echo 'gem: --bindir /usr/local/bin' >> ~/.gemrc
$ sudo gem install cocoapods

愉快的使用cocoapods吧~

在macOS10.13以前是支持Xcode中直接打开终端的,步骤呢就是下面这样子:

效果图

  1. 右击工程
  2. Open With External Editor
  3. 终端弹出来了。。

如果没有生效,就是你的电脑上装了什么可以打开xx.xcodeproj的应用程序,也就是在Finder下右击可以看到如下样式:

效果图

呐~ Xcode为默认,备忘录为默认下面的第一个~~

对,如果这样的话,那么按照上面3步,得到的结果是:这个文件被莫名其妙的保存在了备忘录~~

这不是我们要的🤷‍♂️,下面我们通过修改备忘录.app的配置文件来达到我们的效果。

Read more »

错误输出

error: exportArchive: “Fangduoduo_ent.app” requires a provisioning profile with the Push Notifications and Associated Domains features.

Error Domain=IDEProvisioningErrorDomain Code=9 “”Fangduoduo_ent.app” requires a provisioning profile with the Push Notifications and Associated Domains features.” UserInfo={NSLocalizedDescription=”Fangduoduo_ent.app” requires a provisioning profile with the Push Notifications and Associated Domains features., NSLocalizedRecoverySuggestion=Add a profile to the “provisioningProfiles” dictionary in your Export Options property list.}

Read more »