Search code examples
iosswiftswift3viewswift4

iOS view visibility gone


I am new to iOS development.I want to toggle (hide/visible) a subview from parent view.In android there is a way to hide the visibility to gone.

In android

subView.setVisibility(View.GONE);

In iOS

subView.removeFromSuperview()

when i use above function it remove subViewConstraints and mess up my scroll view constraints.

topsubView.bottomAnchor.constraint(equalTo: bottomSubView.topAnchor, constant: 8).isActive = true

when i use the above code it works fine and hide subView.but when i want to make subView visible,it is not showing the subView.

topsubView.bottomAnchor.constraint(equalTo: bottomSubView.topAnchor, constant: 8).isActive = false
self.view.layoutIfNeeded()

Hope you understand my problem.Thanks in Advance.


Solution

  • As I have worked on both iOS & Android, You need to play with constraint outlet in ios to achieve Android functioning. iOS Does not support automatically like Android native support on visibility GONE & VISIBLE

    You need to hook the outlet of particular constraint(it may vertical/horizontal/height) you need to set it to 0 & need to manage your UI.

    To Hide:

    self.viewYourConstraint.constant = 0
    self.yourView.hidden = true
    self.view.layoutIfNeeded()
    

    To Show:

    self.viewYourConstraint.constant = 100//your constant value
    self.yourView.hidden = false
    self.view.layoutIfNeeded()
    

    Note: If other constraints will be affected because of the update to the constraint above, the following must also need to be called:

    self.yourView.setNeedsUpdateConstraints()