美文网首页程序员
如何复制xib中的UITableViewCell?

如何复制xib中的UITableViewCell?

作者: 小而白 | 来源:发表于2020-09-09 15:28 被阅读0次

    抛出问题

    有时候我们新开发的一个view 与原有页面中某个cell 的UI设计是一样的,但是由于原cell由xib实现,你会发现无法将该cell 或其 contentView 直接复制到新的xib 画布当中。那么怎么办呢?

    问题研究

    别着急,我们先来研究下cell 与 view 在xib 当中的区别。
    随手搭建一个简单的cell作为研究标本,假设我们的cell 是长这样子的:


    demoCell.png

    然后我们用xib手动搭建一个同款的UIView:


    demoView.png

    接下来到了我们来找茬的游戏环节,我们对比一下两个nib/xib文件的source code (请忽略一些尺寸数值的不同)


    demoCell.png demoView.png

    xib 的source code 是 xml 语言来描述的,仔细研究也能发现一些其中的规律。现在我们不难看出主要的区别就在外层包裹的部分。直接更改source code 就能达到我们的需求了。现在的问题等价于如何将xib 中的 UITableViewCell 转成UIView。

    解决方案

    我们把cell 整容成view 的样子。简单起见,tableViewCell 及 tableViewCellContentView 两层包裹替换成一个包裹。 以下的代码删除掉,注意先把tableViewCellContentView 的 id="H2p-sc-9uM" 拿个小本本记录下来。

        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="99" id="KGk-i7-Jjw" customClass="DemoCell">
            <rect key="frame" x="0.0" y="0.0" width="267" height="99"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
    

    替换成如下的code。

    <view contentMode="scaleToFill" id="H2p-sc-9uM" customClass="DemoCell">
                <rect key="frame" x="0.0" y="0.0" width="316" height="107"/>
                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    

    这里的id 就是刚刚记录下来的。这里的customClass 是与当前nib文件名对应的。 接下来把成对的收尾的小括号也改改。</tableViewCell> 改成</view>
    </tableViewCellContentView> 删除

    到这里大功告成。当然实际开发中数值或其他细节会不同,大家根据实际情况调整就好了。

    总结

    现在你已经知道了如何复制xib中的UITableviewCell啦,那UICollectionViewCell呢?其实是一样的哈。

    步骤:
    1.复制原cell的sourcecode
    2.新建一个新的xib view,通过source code 方式打开,用刚复制的source code 替换全部内容。 
    3.根据相关规则修改source code。 
    

    最主要的就是要清楚xib source code 描述UI的基本规则,这样才能灵活运用,有些情况下直接修改xib source code 比操作图形化界面要高效很多。

    相关文章

      网友评论

        本文标题:如何复制xib中的UITableViewCell?

        本文链接:https://www.haomeiwen.com/subject/ajteektx.html