直播系统源代码,按钮图片和文字位置的各种设置
直播系统源代码,按钮图片和文字位置的各种设置实现的相关代码
1.在UIButton的扩展中添加方法
1 | <br> /*<br>枚举 设置 图片的位置<br>*/ <br> enum ButtonImagePosition : Int {<br> case imageTop = 0 <br> case imageLeft<br> case imageBottom<br> case imageRight<br>}<br>extension UIButton {<br> <br> /**<br> type :image 的位置<br> Space :图片文字之间的间距<br> */ <br>func setImagePosition(type:ButtonImagePosition,Space space:CGFloat) {<br> <br> let imageWith :CGFloat = (imageView?.frame.size.width)!;<br> let imageHeight :CGFloat = (imageView?.frame.size.height)!;<br> <br> var labelWidth :CGFloat = 0.0 ;<br> var labelHeight :CGFloat = 0.0 ;<br> labelWidth = CGFloat(titleLabel!.intrinsicContentSize.width);<br> labelHeight = CGFloat(titleLabel!.intrinsicContentSize.height);<br> var imageEdgeInsets :UIEdgeInsets = UIEdgeInsets();<br> var labelEdgeInsets :UIEdgeInsets = UIEdgeInsets();<br> <br> switch type {<br> case .imageTop:<br> imageEdgeInsets = UIEdgeInsets.init(top: -labelHeight - space/ 2.0 , left: 0 , bottom: 0 , right: -labelWidth)<br> labelEdgeInsets = UIEdgeInsets.init(top: 0 , left: -imageWith, bottom: -imageHeight-space/ 2.0 , right: 0 )<br> break ;<br> case .imageLeft:<br> imageEdgeInsets = UIEdgeInsets.init(top: 0 , left:-space/ 2.0 , bottom: 0 , right:space/ 2.0 )<br> labelEdgeInsets = UIEdgeInsets.init(top: 0 , left:space/ 2.0 , bottom: 0 , right: -space/ 2.0 )<br> break ;<br> case .imageBottom:<br> imageEdgeInsets = UIEdgeInsets.init(top: 0 , left: 0 , bottom: -labelHeight-space/ 2.0 , right: -labelWidth)<br> labelEdgeInsets = UIEdgeInsets.init(top:-imageHeight-space/ 2.0 , left:-imageWith, bottom: 0 , right: 0 )<br> break ;<br> case .imageRight:<br> imageEdgeInsets = UIEdgeInsets.init(top: 0 , left:labelWidth+space/ 2.0 , bottom: 0 , right: -labelWidth-space/ 2.0 )<br> labelEdgeInsets = UIEdgeInsets.init(top: 0 , left:-imageWith-space/ 2.0 , bottom: 0 , right:imageWith+space/ 2.0 )<br> break ;<br> }<br> self.titleEdgeInsets = labelEdgeInsets<br> self.imageEdgeInsets = imageEdgeInsets<br> }<br> <br>} |
2.使用
1 | <br> lazy var btn1:UIButton = {<br> let btn = UIButton.init(frame: CGRect.init(x: 50 , y: 100 , width: 120 , height: 40 ))<br> btn.backgroundColor = .gray<br> btn.setImage(UIImage.init(named: "test" ), for : .normal)<br> btn.setTitle( "测试标题" , for : .normal)<br> btn.setImagePosition(type: .imageLeft, Space: 5 )<br> return btn<br> }()<br> lazy var btn2:UIButton = {<br> let btn = UIButton.init(frame: CGRect.init(x: 50 , y: 160 , width: 120 , height: 40 ))<br> btn.backgroundColor = .gray<br> btn.setImage(UIImage.init(named: "test" ), for : .normal)<br> btn.setTitle( "测试标题" , for : .normal)<br> btn.setImagePosition(type: .imageRight, Space: 5 )<br> return btn<br> }()<br> <br> lazy var btn3:UIButton = {<br> let btn = UIButton.init(frame: CGRect.init(x: 50 , y: 220 , width: 120 , height: 80 ))<br> btn.backgroundColor = .gray<br> btn.setImage(UIImage.init(named: "test" ), for : .normal)<br> btn.setTitle( "测试标题" , for : .normal)<br> btn.setImagePosition(type: .imageTop, Space: 10 )<br> return btn<br> }()<br> <br> lazy var btn4:UIButton = {<br> let btn = UIButton.init(frame: CGRect.init(x: 50 , y: 320 , width: 120 , height: 80 ))<br> btn.backgroundColor = .gray<br> btn.setImage(UIImage.init(named: "test" ), for : .normal)<br> btn.setTitle( "测试标题" , for : .normal)<br> btn.setImagePosition(type: .imageBottom, Space: 10 )<br> return btn<br> }()<br> <br> //运行出来的效果就是上面的截图<br> override func viewDidLoad() {<br> super.viewDidLoad()<br> // Do any additional setup after loading the view.<br> view.addSubview(btn1)<br> view.addSubview(btn2)<br> view.addSubview(btn3)<br> view.addSubview(btn4)<br> } |
但是,你会发现有两个警告’titleEdgeInsets’ will be deprecated in iOS 15.0 ‘imageEdgeInsets’ will be deprecated in iOS 15.0,这是苹果公司在iOS15之后对UIButton做了改动,主要是解决这个图片位置的调整的问题,打开api你会发现这个 UIButtonConfiguration
3.附上 UIButtonConfiguration 使用方法
1 | <br> if #available(iOS 15.0 , *) {<br> var conf1 = UIButton.Configuration.plain()<br> conf1.title = "分享" <br> conf1.baseForegroundColor = .black<br> conf1.image = UIImage(named: "jk_anniu_shuju_fenxiang_f" )<br> conf1.imagePlacement = .leading<br> conf1.imagePadding = 10 <br> let bt1 = UIButton.init(configuration: conf1, primaryAction: nil)<br> <br> <br> var conf2 = UIButton.Configuration.bordered()<br> conf2.title = "分享" <br> conf2.baseForegroundColor = .orange<br> conf2.image = UIImage(named: "jk_anniu_shuju_fenxiang_f" )<br> conf2.imagePlacement = .trailing<br> conf2.imagePadding = 40 <br> let bt2 = UIButton.init(configuration: conf2, primaryAction: nil)<br> <br> <br> var conf3 = UIButton.Configuration.borderedTinted()<br> conf3.title = "分享" <br> conf3.baseForegroundColor = .red<br> conf3.image = UIImage(named: "jk_anniu_shuju_fenxiang_f" )<br> conf3.imagePlacement = .top<br> conf3.imagePadding = 10 <br> let bt3 = UIButton.init(configuration: conf3, primaryAction: nil)<br> <br> <br> var conf4 = UIButton.Configuration.gray()<br> conf4.title = "分享" <br> conf4.baseForegroundColor = .brown<br> conf4.image = UIImage(named: "jk_anniu_shuju_fenxiang_f" )<br> conf4.imagePlacement = .bottom<br> conf4.imagePadding = 10 <br> let bt4 = UIButton.init(configuration: conf4, primaryAction: nil)<br> <br> bt1.frame = CGRect(x: 220 , y: 100 , width: 100 , height: 80 )<br> bt2.frame = CGRect(x: 220 , y: 200 , width: 150 , height: 80 )<br> bt3.frame = CGRect(x: 220 , y: 300 , width: 100 , height: 80 )<br> bt4.frame = CGRect(x: 220 , y: 400 , width: 100 , height: 80 )<br> <br> view.addSubview(bt1)<br> view.addSubview(bt2)<br> view.addSubview(bt3)<br> view.addSubview(bt4)<br> } |
以上就是直播系统源代码,按钮图片和文字位置的各种设置实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现