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

   


缘由:

开发时或多或少会遇到因某个条件地达成,需要显示或隐藏画面中的另一个条件,若是区块在最底部,直接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!])
        }
    }

免费美国电话号码 Google Voice 0月租

免费美国电话号码 Google Voice 0月租

使用Google Voice服务可以免费拨打美国或加拿大境内的任何电话,而国际电话(非北美地区)的费用也比传统电话便宜,比如拨打中国大陆的价格为1美分/分钟,香港的价格为2美分/分钟,台湾市话:2美...

国内注册公司和国外注册公司区别:注册国外公司好还是用国内公司好?

国内注册公司和国外注册公司区别:注册国外公司好还是用国内公司好?

国内公司、香港公司、美国公司是目前绝大部分跨境卖家的身份选择。国内公司身份自然不必多说,90%+都是。香港和美国公司则少的多。但选择的人多并不表示国内公司就是最佳的经营跨境电商身份选择。 国内公司 首...

网站打开速度慢怎么办?为什么网站一定要打开快

在深入探讨提高网站速度之前,让我们探讨一下为什么它对您的小型企业如此重要。 更快的网站意味着: 更好的用户体验 您的网站性能会影响用户的体验 - 当您的网站加载速度更快时,用户更有可能与之互动并花费更...

如何提高网站访问速度:怎么让网站更快打开的方法

网站速度优化对于创造积极的用户体验至关重要。 积极的用户体验是快乐用户的营销代言词。 快乐的用户访问您的网站并购买东西。 不满意的用户离开是因为他们厌倦了等待您的网站加载。 营销人员称之为“跳出率”...

网站服务器怎么选?如何选择最好的网站服务器

为什么网站速度很重要 到目前为止,您应该不需要说服网站速度对您的在线业务至关重要。 这是因为网站性能会影响您的品牌声誉、SEO 排名和转化率。 以下是发生这种情况的主要原因: 品牌口碑👍 老实说,当...

返回顶部