[技术文档][技术中心][iOS部][114啦]详情页工具栏

需求说明

返回:左下角返回
收藏:收藏文章进入收藏-经验模块;需要登录
有用:点击后有用数+1,无需登录即可点;
转发:弹出转发弹层
置顶:回到顶部,如果已经是置顶状态则置灰

需求地址

http://192.168.1.75/114la/220/114la_220/#g=1&p=3_2_%E6%99%AE%E9%80%9A%E5%B8%96

接口说明

星标文章

URL:http://114larc.com/z/api/1.0/android/2.0/markFav
请求方式:POST

  • 请求参数说明
参数名称 必选 类型 描述
tid true int ID
type true int 类型1为经验 2为说明书 3为工具 4为微店
op true string 操作add 星标 del 取消星标
cat_id false int 说明书章节ID
  • 返回参数说明
参数名称 类型 描述
success int 1为成功,其他为失败
  • 返回结果
{
    "state": 1,
    "code": 0,
    "message": "",
    "data": {
        "success": 1
    }
}

有用文章

URL:http://114larc.com/z/api/1.0/android/2.0/markUseful
请求方式:POST

  • 请求参数说明
参数名称 必选 类型 描述
tid true int ID
type true int 类型1为经验 2为说明书 3为工具
op true string 操作add有用 del取消
cat_id false int 说明书章节ID
  • 返回参数说明
参数名称 类型 描述
success int 1为成功,其他为失败
  • 返回结果
{
    "state": 1,
    "code": 0,
    "message": "",
    "data": {
        "success": 1
    }
}

核心代码

该工具是由nib实现,布局直接看nib添加的约束。
根据详情页获取的文章信息进行初始化。

func setupStarToolBar(_ pageInfo: [String:Any]) {
        starBtn.isEnabled = true
        zanBtn.isEnabled = true
        shareBtn.isEnabled = true
        scrollTopBtn.isEnabled = true
        
        tid = pageInfo["id"] as? Int ?? -1
        type = pageInfo["type"] as? Int ?? 3
        starBtn.isSelected = pageInfo["is_fav"] as? Bool ?? false
        zanBtn.isSelected = pageInfo["is_useful"] as? Bool ?? false
        usefulNum = pageInfo["useful_num"] as? Int ?? 0
        catId = pageInfo["cat_id"] as? Int
        usefulNumLabel.text = String.toRelativeNumberString(intNum: usefulNum)
        if usefulNum <= 0 {
            zanBtn.setImage(UIImage(named: "tool_bar_zan_normal"), for: UIControlState())
        } else {
            zanBtn.setImage(UIImage(named: "tool_bar_zan_num"), for: UIControlState())
        }
//        usefulNumLabel.backgroundColor = UIColor.white
        
        if let dict = (pageInfo["pics"] as? [Any])?.first as? [String:Any] {
            shareImageUrl = dict["src"] as? String ?? ""
        }
    }

显示或者隐藏:星标、点赞等按钮。给外部调用。

func showStarBtns() {
        starBtn.isHidden = false
        zanBtn.isHidden = false
        shareBtn.isHidden = false
        scrollTopBtn.isHidden = false
        usefulNumLabel.isHidden = false
    }
    
    func hideStarBtns() {
        starBtn.isHidden = true
        zanBtn.isHidden = true
        shareBtn.isHidden = true
        scrollTopBtn.isHidden = true
        usefulNumLabel.isHidden = true
    }

直接在该类中进行请求接口,未使用代理到详情页请求。
相关逻辑都在该类中。

你可能感兴趣的:([技术文档][技术中心][iOS部][114啦]详情页工具栏)