第一行的选中效果已经有了,那第二行的选中效果怎么做呢?
我这里选择改变布局约束来实现选中效果 [我有个用object-c做APP的同事他说,我觉得这个应该去获取色块的位置,然后赋给选中用的View,然后横屏的时候也这么重新定位一下。我只想说: 好像很麻烦啊 ]

那改变布局约束要怎么做呢?往下看

找到需要改变的约束

让它与EditViewController绑定

设定好绑定的信息

绑定约束的父容器到EditViewController

绑定选中用的View到EditViewController

这几个绑定完成以后

@IBAction func typeColorBtnCheck(sender: UIButton) { selectColor = sender.backgroundColor print(selectColor) ContentView.removeConstraint(typeColorConstraintSelect)//删除ContentView里面原有的约束typeColorConstraintSelect typeColorConstraintSelect = NSLayoutConstraint( item: sender, //建立约束的第一个控件,这里是我们点击的那个色块按钮sender attribute: NSLayoutAttribute.CenterX, //约束的类型 relatedBy: NSLayoutRelation.Equal, toItem: typeColorSelect, //建立约束的第二个控件 attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, //约束比例 constant: 0 //约束偏移值 ) ContentView.addConstraint(typeColorConstraintSelect)//添加新的约束 }

注意:约束的父容器一定要弄对,不然添加了之后肯定是有问题或者没有效果的
注意:约束添加以后是为两个控件添加了一个约束,两个控件共有一个约束,所以要避免重复添加约束

自此,我们就完成了第二行色块选中的效果 (当然横屏什么的它也是没有问题的,不信你试试?) ???

补一段完整代码

class EidtViewController: UIViewController {@IBOutlet var typeBtn: [UIButton]! @IBOutlet var typeColorBtn: [UIButton]! @IBOutlet weak var typeColorConstraintSelect: NSLayoutConstraint! @IBOutlet weak var ContentView: UIView! @IBOutlet weak var typeColorSelect: UIView! var selectColor: UIColor? override func viewDidLoad() { super.viewDidLoad() selectColor = typeColorBtn[0].backgroundColor // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func typeBtnCheck(sender: UIButton) { for btn in typeBtn { btn.layer.borderWidth = 0 btn.tintColor = typeColorBtn[0].backgroundColor } sender.layer.borderWidth = 1 sender.layer.borderColor = UIColor.init(red: 176/255.0, green: 176/255.0, blue: 176/255.0, alpha: 1).CGColor sender.tintColor = selectColor } @IBAction func typeColorBtnCheck(sender: UIButton) { selectColor = sender.backgroundColor print(selectColor) ContentView.removeConstraint(typeColorConstraintSelect)//删除ContentView里面原有的约束typeColorConstraintSelect typeColorConstraintSelect = NSLayoutConstraint( item: sender, //建立约束的第一个控件,这里是我们点击的那个色块按钮sender attribute: NSLayoutAttribute.CenterX, //约束的类型 relatedBy: NSLayoutRelation.Equal, toItem: typeColorSelect, //建立约束的第二个控件 attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, //约束比例 constant: 0 //约束偏移值 ) ContentView.addConstraint(typeColorConstraintSelect)//添加新的约束 } }
文/P_T(简书作者)
原文链接:http://www.jianshu.com/p/e9d55e3d252d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

第一个Xcode项目 - 代码修改布局约束相关推荐

  1. Android代码修改ConstraintLayout约束关系

    //代码修改ConstraintLayout约束关系 ConstraintSet set = new ConstraintSet(); //克隆父布局(ConstraintLayout)的约束关系 s ...

  2. Unity3D_HDRP项目代码修改天空球

    U3D HDRP项目 代码修改天空球的办法 public Volume volume;public UnityEngine.Rendering.HighDefinition.HDRISky HDRIS ...

  3. 发一个统计项目代码行数的Java代码

    import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Arra ...

  4. 将项目代码上传至svn服务器,xcode 把项目代码提交到远程SVN服务器

    环境 xcode 7  Mac air xcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下: 1,在safari中打开svn链接地址,信任证书,输入用户名密码 , ...

  5. commit是直接提交到远程吗 svn_xcode 把项目代码提交到远程SVN服务器

    环境 xcode 7  Mac air xcode默认支持GIT源码管理工具,但现在想把代码提交到已有到SVN服务器上,步骤如下: 1,在safari中打开svn链接地址,信任证书,输入用户名密码 , ...

  6. Android Studio的代码笔记--基本使用、新建一个项目、修改快捷键、常用控件的使用等

    基本使用 创建一个新项目 新建一个activity 修改主界面 新建一个布局并引用 app模块下的文件目录结构 res 下的常用资源目录 AndroidManifest.xml文件代码解释 Activ ...

  7. 【转 iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    原文网址:http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式 ...

  8. iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    原文链接:http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式 ...

  9. Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生.本篇文章将详细介绍如何使用自动布局实现不同屏幕尺寸的适配. 添加自动布局约束(下文简称约束)有以下三种方 ...

最新文章

  1. QS世界大学最新排名公布:清华超过耶鲁,MIT仍居榜首,12所中国高校跻身百强...
  2. 这次终于彻底理解了傅里叶变换
  3. 三维识别与位姿估计——Surafce Matching
  4. Crazepony的理念
  5. 申请补办 CET(纸笔考试)成绩证明的方法
  6. mysql 时间 1_(转)mysql日期时间函数1
  7. [转载]SQL Plus 一些使用技巧
  8. C#用DataTable实现Group by数据统计
  9. 互联网创业公司的传统思维
  10. 中文信息处理——使用结巴分词系统
  11. 主流搜索引擎博客提交地址
  12. 别让PPT把你绑架了
  13. 2018/5/3单纯和纯洁
  14. 无论是否跳槽——都要时刻关注自身能力提升
  15. 如何启动android模拟器,如何从命令行启动Android模拟器?
  16. 阿里和微博的异地多活方案
  17. 为什么禁止超过三张表 join,原理是什么?
  18. 乐2的android版本,乐视2高通|MIUI10|安卓6.0|最终完美版|极速_最新最全的乐2高通版ROM刷机包下载、刷机...
  19. 图像增强算法(持续更新中)
  20. [Python公开课]零基础玩转Python基础篇----第四节:Python的字符串

热门文章

  1. C 函数别名简单记录
  2. spring手动控制事务开启_Spring 基于AOP的事务控制
  3. mysql 5.5.38_数据库的硬迁移和mysql 5.5.38源码安装
  4. 软件测试的测什么,软件测试人员应具备哪些能力?
  5. 2019华为性格测试题_小红书达人力荐!华为 Mate20 Pro红蓝新色最懂女人心
  6. RS232接口是如何工作的?
  7. 自定义Quartz超实用工具类
  8. 关于c++变长参数列表总结
  9. (十二)Flask 学习 —— 换装
  10. KMP算法的理解,伪代码,c代码实现