【iOS】知乎日报第四周总结

  • 本周将知乎日报仿写任务总体上算是完成了,这周主要完善了评论功能和收藏功能,学习到了自适应cell高度和使用FMDB数据库的用法

关于实现自适应cell高度

  • 在写评论页面时,因为请求到评论的字数不一致,会导致评论的行数不同,因此想让单元格的高度随着行数的变化而自适应。
  • 一开始想到的办法比较无脑,比较暴力没有技术含量。就是算出评论文字占label每一行的宽度,每一行的高度,再用总字数在此font下所需要的宽度去除以每一行的高度得知需要的行数。最后根据 行数✖️每一行行高可以大致算出改单元格所占的高度。然后每一条评论都用此方法计算后设置该评论单元格的高度。
  • 之后了解到了单元格自适应的方法,根据评论文字的labelMasonry的约束限制下将单元格撑开。具体就是在设置评论文字label的约束时,只设置top、bottom、left、right,其中topbottomequal对象得是上下被固定好的控件(也可以是单元格self自身)。
        [_contentLabel mas_makeConstraints:^(MASConstraintMaker* make) {
            make.bottom.equalTo(_timeLabel.mas_top).offset(-20);
            make.top.equalTo(_nameLabel.mas_bottom).offset(10);
            make.left.equalTo(_nameLabel.mas_left);
            make.right.equalTo(self.contentView.mas_right).offset(-20);
        }];
  • 写完后运行发现没有实现想要的效果,仔细查询发现,用Masonry的约束要放在- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;,我之前是单独将约束部分的代码都放在了- (void)layoutSubviews;,因此没有达到想要的效果。
  • 关于展开按钮的复用问题,当我点击展开一条长评回复时,向下滑动会发现另一条长评回复也会被自动打开,这时我知道了展开按钮的被选中状态被复用了。因此我单独创建了一个数组专门用来存放每一行单元格上展开按钮的选中状态,每次读取或者改变时都是从这个数组中取或者改,改正了被复用的问题。

请添加图片描述

使用FMDB实现收藏功能

什么是FMDB

  • iOS中使用C语言函数对原生SQLite数据库进行增删改查操作,复杂麻烦,于是,就出现了一系列将SQLite API封装的库,如FMDB
    FMDB是针对libsqlite3框架进行封装的三方,它以OC的方式封装了SQLite的C语言的API,使用步骤与SQLite相似

FMDB 使用方法

在点击收藏按钮后,将该网页的id和文章标题和图片的URL存入数据库,取消收藏时,移出数据库即可

请添加图片描述

视图层级顺序

请添加图片描述

git链接

github链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值