隐藏&显示画面中间的某区块

缘由:

开发时或多或少会遇到因某个条件地达成,需要显示或隐藏画面中的另一个条件,若是区块在最底部,直接isHidden.toggle(),看起来是没什麽问题,但假如是在画面中段或上半部,那是不是会消失的有点突兀,所以要加入一个画面的约束条件,网上查找相关的资讯,可以用程序码直接设定约束条件,就能达成此需求。

实作:

前置作业除了将相关要用到的元件先Referencing Outlets到ViewController中外,
将UISwitch元件先预设为On,且将要隐藏的元件们嵌入StackView

//是否为台湾籍区块
@IBOutlet weak var IsTaiwaneseStackView: UIStackView!
//身分证字号输入区块
@IBOutlet weak var IDStackView: UIStackView!
//是否是台湾籍的开关
@IBOutlet weak var IsTaiwaneseSwitch: UISwitch!

以下范例我是将”是否为台湾籍”的UISwitch元件的Sender当作是否显示”身分证号码”输入区块的判断依据,当”是否为台湾籍”为On时,显示”身分证号码”输入区块,反之,则隐藏”身分证号码”输入区块。
若非台湾籍要隐藏红色框框的区块
https://ithelp.ithome.com.tw/upload/images/20210916/20130757qvkZiDT6NR.png

隐藏後如下图
https://ithelp.ithome.com.tw/upload/images/20210916/201307572BhHDIc1vM.png
接着我们先建立一个约束条件的变数
var IsTaiwaneseStackViewToIDStackViewSpace:NSLayoutConstraint? = nil

然後在viewDidLoad() 中,先设定好要隐藏区块的约束条件的内容

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        IsTaiwaneseStackViewToIDStackViewSpace = NSLayoutConstraint(item: IsTaiwaneseStackView, attribute: .bottom, relatedBy: .equal, toItem: IDStackView, attribute: .bottom, multiplier: 1, constant: 0)
    }

当UISwitch的Sender接收到更动时,就会把指定区块隐藏/显示且启动/停用的隐藏的约束条件
启用约束条件程序码:
NSLayoutConstraint.activate(<#T##constraints: [NSLayoutConstraint]##[NSLayoutConstraint]#>)
停用约束条件程序码:
NSLayoutConstraint.deactivate(<#T##constraints: [NSLayoutConstraint]##[NSLayoutConstraint]#>)

范例如下:

    //Switch sender
    @IBAction func IsTaiwaneseSender(_ sender: Any) {
        IDStackView.isHidden.toggle()
        if IsTaiwaneseSwitch.isOn {
            NSLayoutConstraint.deactivate([IsTaiwaneseStackViewToIDStackViewSpace!])
        }
        else {
            NSLayoutConstraint.activate([IsTaiwaneseStackViewToIDStackViewSpace!])
        }
    }

<<:  android studio 30天学习笔记-day 1 - 前言

>>:  Day 04:看看 Angular CLI 对我们做了什麽?认识专案架构

DAY29 进行式--工作日志004

工作日志碎碎念 OH,我现在在实作的时候,常常翻我这次铁人赛的文章,因为这就是我的学习笔记麻 结果发...

Day13 iPhone捷径-媒体Part3

Hello 大家, 今天第一个要讲的是拍摄萤幕快照, 嘿嘿~就是截图, 没啥好说的XD, 但截图後面...

Apache 与 Tomcat 简易介接设定

本文章是以 CentOS 为作业系统进行安装与操作设定 HTTP Server 安装 Apache ...

什麽是战略分析 (Strategic Analysis)?如何使用工具进行此操作

您是否希望提高您的竞争地位? 应对外部威胁?识别新的机会或风险? 扩大您在新市场的影响力? 战略分...

网路的小技巧

//兴趣记录一下~希望退休以後可以回味,各位别嫌弃,感谢各位!! // CCNA-1 Login ,...