效果图:

思路:(self为自定义的View,里面有三个按钮和两个分隔线)

一、按钮约束:使三个按钮等宽分布

1、按钮一:上、左、下和self对齐,宽和“按钮二”对齐

2、按钮二:上、下和self对齐,宽和“按钮三”对齐,左和“按钮二”右对齐

3、按钮三:上、右、下和self对齐,左和“按钮二”右对齐

二、竖线约束:

1、分隔线一:CenterY和self对齐,CenterX和“按钮一”右对齐

2、分隔线二:CenterY和self对齐,CenterX和“按钮二”右对齐

 1 private func setupUI(){
 2         // 添加三个按钮
 3         let retweetButton = addChildButton(imageName: "timeline_icon_retweet",title: "转发")
 4         let commentButton = addChildButton(imageName: "timeline_icon_comment",title: "评论")
 5         let unlikeButton = addChildButton(imageName: "timeline_icon_unlike",title: "赞")
 6
 7         // 添加两个分隔线
 8         let firstLineView = addChildLineView()
 9         let secondLineView = addChildLineView()
10
11         // 设置三个按钮的约束
12         retweetButton.snp_makeConstraints { (make) in
13             make.top.leading.bottom.equalTo(self)
14             make.width.equalTo(commentButton)
15         }
16         commentButton.snp_makeConstraints { (make) in
17             make.top.bottom.equalTo(self)
18             make.leading.equalTo(retweetButton.snp_trailing)
19             make.width.equalTo(unlikeButton)
20         }
21         unlikeButton.snp_makeConstraints { (make) in
22             make.top.trailing.bottom.equalTo(self)
23             make.leading.equalTo(commentButton.snp_trailing)
24         }
25
26         // 设置两个分隔线约束
27         firstLineView.snp_makeConstraints { (make) in
28             make.centerX.equalTo(retweetButton.snp_trailing)
29             make.centerY.equalTo(self)
30         }
31         secondLineView.snp_makeConstraints { (make) in
32             make.centerX.equalTo(commentButton.snp_trailing)
33             make.centerY.equalTo(self)
34         }
35     }
36
37     // 创建button按钮
38     private func addChildButton(imageName:String,title:String) -> UIButton{
39         let button = UIButton()
40         button.setImage(UIImage(named:imageName), for: .normal)
41         button.setTitle(title, for: .normal)
42         button.titleLabel?.font = UIFont.systemFont(ofSize: 14)
43         button.setTitleColor(UIColor.darkGray, for: .normal)
44         button.setBackgroundImage(UIImage(named:"timeline_card_bottom_background"), for: .normal)
45         button.adjustsImageWhenHighlighted = false
46         addSubview(button)
47         return button
48     }
49
50     // 创建竖线视图
51     private func addChildLineView() -> UIImageView{
52         let imageView = UIImageView(image:UIImage(named:"timeline_card_bottom_line"))
53         addSubview(imageView)
54         return imageView
55     }

转载于:https://www.cnblogs.com/panda1024/p/6180910.html

设置三个按钮等宽分布相关推荐

  1. IOS约束三个按钮等宽等高,均分整个view,

    IOS约束三个按钮等宽等高,均分整个view, 转发评论和赞这三个按钮如何平均等分. 第1步: 设置 转发按钮 距离 左0 上 1. 第2步: 设置 赞按钮 距离右边0, 第3步: 设置 中间按钮距离 ...

  2. 动态设置View的宽高、宽高比例(设置ViewPager的高度,宽高比例为2:1)

    利用ViewPager显示banner的时候,一些人会直接写死ViewPager高度,比如在xml布局里面直接写成180dp. 这样的话,每个手机的宽度不同,viewpager里面内容的长宽比就不同, ...

  3. 动态设置 GridView Web 服务器控件列宽

    ASP.NET 如何:动态设置 GridView Web 服务器控件列宽 默认情况下,会自动调整 GridView 控件中列的大小.列将呈现为不含宽度信息的 HTML 表单元格(td 元素):大多数浏 ...

  4. 计算机excel行高在哪里,如何在Excel2016中设置改行高和列宽?

    相信大家会发现excel2016默认的行号和列宽有的时候会不符合自己的要求,那如何在Excel2016中设置改行高和列宽?下面感兴趣的小伙伴就和小编一起来学习一下具体的方法吧! Excel2016设置 ...

  5. CSS实现三列图片等宽等间距布局

    每个图片块左浮动,宽30%,左外边距2.5%: 100%=(2.5%+30%)+(2.5%+30%)+(2.5%+30%)+2.5%<!DOCTYPE html> <html> ...

  6. 【Unity游戏开发】动画系统(三)按钮动画

    文章目录 动画系统之按钮动画 1. 按钮Botton 2. 创建一个Button按钮 3. 按钮动画 3.1 改变颜色 3.2 改变图片 3.3 改变动画 结语 动画系统之按钮动画 动画系统是一个比较 ...

  7. 台式计算机蓝牙无服务,Windows10无法找到蓝牙设置三种解决方法

    说到蓝牙,大家首先想到就是手机上的,现在蓝牙用于将各种设备连接到您的计算机. 它可能是你的键盘,鼠标,手机,耳机等等.一些用户反馈说在Windows10系统中无法找到蓝牙设置,怎么办呢?针对此疑问,接 ...

  8. 动态设置view或布局的宽高

    代码中动态设置view或布局的宽高   标签: 图片/ 动态改变/ 宽高 有时我们需要在应用中动态改变图片或某一块布局的大小.这就不能用XML文件写成固定值,而需要在java代码中动态设置.效果如下: ...

  9. python气象处理第三弹-绘制气象站点分布

    python气象处理第三弹-绘制气象站点分布 python气象处理第三弹-绘制气象站点分布 python气象处理第三弹-绘制气象站点分布 前言 一.下载并转换中国气象站点数据? 二.使用步骤 1.引入 ...

  10. html5 两栏等宽布局代码,分三栏栏宽相等 如何将合并的一段分为等宽三栏,栏宽为4.5厘米...

    将正文的最后一段分成等宽的三栏,栏间加分隔线.将正文的最后一段分成等宽的三栏,栏间加分隔线. 方法步骤如下: 打开需要操作的WORD文档,选中正文最后一段,点击页面布局中的"更多分栏&quo ...

最新文章

  1. 字节跳动一面:i++ 是线程安全的吗?
  2. struct和typedef struct的区别(转)
  3. 关于js中function(e) e的理解
  4. ajax清请求过程,JS深入基础之Ajax的请求过程
  5. Spring Boot中配置嵌入式Servlet容器修改配置
  6. java 关于集合的笔试题_Java集合面试题(一)
  7. 模糊的边界:内存和存储以全新方式融合
  8. 【转】到底什么时候应该用MQ
  9. 关于类微博的timeline的设计思考
  10. 使用Secure Store Service连接数据库
  11. 分享PHP获取客户端IP的几种不同方式
  12. html中多个div分开排列,CSS+DIV设计实例:多个DIV排列时居中
  13. 擎标|CMMI 5认证对软件企业有什么好处?
  14. 秩和比算法matlab程序,Matlab学习系32. 秩和比综合评价法.docx
  15. JavaScript表单验证示例
  16. Excel表格撤销工作表保护
  17. postman接口测试七
  18. 深度可分离卷积组卷积
  19. OC load 和 initialize 方法
  20. 解压RAR时出现“不可预料的压缩文件末端”的解决方法

热门文章

  1. Windows7下IIS7.5的伪静态URL Rewrite安装配置和案例综合
  2. 对包含HttpContext.Current.Cache的代码进行单元测试
  3. 再看中国互联网web2.0百强名单
  4. 成也英雄,败也英雄—Sun前CEO Scott Mc- Nealy
  5. Dev--Config Files
  6. css布局-瀑布流的实现
  7. iOS之某公司iOS开发笔试题
  8. 第三届空间信息智能服务研讨会
  9. Ubuntu 16.04 安装 Apache, MySQL, PHP7
  10. VS2005中ajax安装指南