直播平台源码,自定义下拉刷新控件

直播平台源码,自定义下拉刷新控件

 

1
import Foundation<br>import UIKit<br>import SnapKit<br>class XRefreshControl: UIRefreshControl {<br>    var observation: NSKeyValueObservation?<br>    var isLocalRefreshing: Bool = false<br>    let indicator = UIProgressView(progressViewStyle: .bar)<br>    var refreshingBlock: (()->Void)?<br>    <br>    override init(frame: CGRect) {<br>        super.init(frame: frame)<br>        <br>        observation = observe(<br>            \.frame,<br>             options: .new<br>        ) { [weak self] object, change in<br>            if self?.isRefreshing == true {<br>                if self?.isLocalRefreshing == false {<br>                    if self?.refreshingBlock != nil {<br>                        self?.refreshingBlock!()<br>                    }<br>                }<br>                self?.isLocalRefreshing = true<br>            } else {<br>                let height = change.newValue!.height<br>                self?.indicator.progress = min(Float(abs(height / 60)), 1)<br>            }<br>        }<br>    }<br>    convenience init(refreshingBlock: @escaping ()->Void) {<br>        self.init(frame: .zero)<br>        <br>        self.refreshingBlock = refreshingBlock<br>        <br>        self.layer.masksToBounds = true<br>        self.backgroundColor = .red<br>        <br>        let v = UIView()<br>        v.backgroundColor = .red<br>        <br>        let center = UIView()<br>        v.addSubview(center)<br>        <br>        let title = UILabel()<br>        title.text = "加载中"<br>        title.textColor = .black<br>        center.addSubview(title)<br>        <br>        indicator.layer.masksToBounds = true<br>        center.addSubview(indicator)<br>        <br>        self.addSubview(v)<br>        v.snp.makeConstraints { make in<br>            make.edges.equalToSuperview()<br>        }<br>        center.snp.makeConstraints { make in<br>            make.center.equalToSuperview()<br>            make.width.equalToSuperview()<br>        }<br>        indicator.snp.makeConstraints { make in<br>            make.top.equalToSuperview()<br>            make.width.height.equalTo(32)<br>            make.centerX.equalToSuperview()<br>        }<br>        title.snp.makeConstraints { make in<br>            make.top.equalTo(indicator.snp.bottom)<br>            make.bottom.equalToSuperview()<br>            make.centerX.equalToSuperview()<br>        }<br>    }<br>    <br>    required init?(coder: NSCoder) {<br>        fatalError("init(coder:) has not been implemented")<br>    }<br>    <br>    deinit {<br>        observation = nil<br>    }<br>    <br>    override func endRefreshing() {<br>        super.endRefreshing()<br>        <br>        self.isLocalRefreshing = false<br>        indicator.progress = 0<br>    }<br>}<br>extension UITableView {<br>    func endRefreshing() {<br>        if ((self.refreshControl?.isKind(of: XRefreshControl.self)) != nil) {<br>            self.refreshControl?.endRefreshing()<br>        }<br>    }<br>}

以上就是直播平台源码,自定义下拉刷新控件, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-11-01 app直播源代码,报错后数据库操作回滚失败解决
2022-11-01 直播平台源代码,循环滚动RecyclerView的实现
2022-11-01 直播平台软件开发,展示弹窗常见API详解
2021-11-01 直播系统平台搭建,DataBinding自定义双向绑定
2021-11-01 在线直播系统源码,横向无限循环滚动的单行弹幕效果
2021-11-01 聊天平台源码,登录时拼图验证
点击右上角即可分享
微信分享提示