美文网首页iOS SB
第一个Xcode项目(7) - ②代码修改布局约束

第一个Xcode项目(7) - ②代码修改布局约束

作者: P_T | 来源:发表于2016-01-21 16:55 被阅读690次

[相关信息:Xcode7.2 ; Swift2.0]

第一行的选中效果已经有了,那第二行的选中效果怎么做呢?
我这里选择改变布局约束来实现选中效果 [我有个用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)//添加新的约束
    }
}

相关文章

  • 第一个Xcode项目(7) - ②代码修改布局约束

    [相关信息:Xcode7.2 ; Swift2.0] 第一行的选中效果已经有了,那第二行的选中效果怎么做呢?我这里...

  • Swift-修改原有项目名->新项目

    Swift--Xcode7以后修改原有项目名,成为新项目的操作步骤 参考博客:Xcode7 修改项目名完全攻略 -...

  • 2019-03-15

    实验内容:关于线性布局、约束布局及表格布局的使用 主要代码: 主界面: 线性布局: 约束布局: 表格布局: 截图:...

  • RN fishhook.c indirect_symbol_

    Xcode升级 11.1 RN 项目 运行到 iPhone XR 上 奔溃: 修改源码:将图中106行代码修改为...

  • 2018-10-31

    ios布局约束 关于布局约束的发展史: 1.通过代码计算fram...

  • indirect_symbol_bindings[i] = cu

    Xcode升级 11.1 RN 项目 运行到 iPhone X是max 上 奔溃: 修改这段代码

  • XCode10 修改代码后编译无效果

    XCode10修改代码后编译不编译最新的代码 前阵子升级Xcode到10.1发现每次修改代码后编译,最新修改的代码...

  • Jetpack Compose 的约束布局ConstraintL

    1.Android虽然支持约束布局,但是我们还是推荐使用约束盒子布局,嵌套虽然增多,但是代码量整体减少。 2.约束...

  • Sourcetree 管理 SVN 项目

    公司的项目使用svn源代码管理,xcode10之后不再支持svn源代码管理,svn管理的代码不会有文件修改提示,添...

  • Xode8 解决RN项目报错

    Xcode7写的所有RN项目,在升级到Xcode8都会报错,需要做以下修改。 1、RCTSRWebSocket.m...

网友评论

    本文标题:第一个Xcode项目(7) - ②代码修改布局约束

    本文链接:https://www.haomeiwen.com/subject/kjdlkttx.html