Notice
Recent Posts
Recent Comments
Link
clyne의 개발 기록
[Swift] iOS에서 Visibility GONE 하기 본문
안녕하세요.
iOS 개발자 CNOO입니다!!!
제가 안드로이드 개발하면서, 가장 유용하게(?) 썼던 것이 Visibility.GONE 이라는 플래그였습니다.
안드로이드 개발하시다가 iOS개발을 시작하시면, VISIBILITY.GONE 이 없어 당황해하시는데요
오늘은 iOS에서는 어떻게 해야하는지 알아보도록 하겠습니다.
iOS에서는 isHidden 이라는 프로퍼티로, 뷰가 보일지, 가릴지를 결정합니다.
자 , 그러면

이러한 뷰에서,
UIView2.isHidden = true
로 UIView2를 가리고, view1과 view3 사이를 좁혀주면 되는데요.
이게 가능하다면, 이렇게 하시면 금방 될것이고...
UIView2.snp.updateConstraint {
$0.height.eqalTo(0)
}
문제는, UIView2 안에 다른 뷰 들이 있으면, 쉽사리 높이를 줄일 수가 없습니다.
Constraint 관련 에러가 나기 때문이죠..
방법은 두 가지가 있습니다.
1. UIView3의 Top Constraint를 UIView1의 Bottom에 붙여주는 것입니다.
UIView2.isHidden = true
UIView2.snp.removeConstraints()
UIView3.snp.makeConstraints {
$0.top.equalTo(UIView1.snp.bottom).offset(10) // 간격 10
}
이렇게하면,
UIView2의 공간이 사라지겠죠!
2. UIVIew 3개를 UIStackView 안에 넣어주는 것입니다.
저는 개인적으로 이 방법을 가장 선호합니다.
isHidden 하나만으로도 안드로이드의 VISIBILITY.GONE을 구현해낼 수 있습니다.
let stackView = UIStackView(arrangedSubviews: [UIView1,UIView2,UIView3])
stackView.spacing = 5
stackView.distribution = .fillEqually
stackView.axis = .vertical
self.view.addSubview(stackView)
stackView.snp.makeConstraints {
$0.edges.equalToSuperview().offset(10)
}
// MAKR: - UIView2 GONE
UIView2.isHidden = true
특히, isHidden쪽에 애니메이션을 주게되면, expand & collapse도 구현해볼 수 있겠네요 ㅎㅎ
나름대로 풀어쓰려고 했는데, 잘 전달되었는지 모르겠네요.
더 좋은 방법이 있으면 공유 부탁드려요 ㅎㅎ
>
'iOS > Swift' 카테고리의 다른 글
[Swift] UIAlertController에 이미지 넣기 (커스텀) (0) | 2021.05.05 |
---|---|
[Swift] Shadow (그림자) 효과 넣기 (0) | 2021.05.04 |
[Swift] 회전 애니메이션 (180도, 90도, 45도, 반시계방향) (0) | 2021.05.02 |
[Swift] SubString 편하게 확장해보자! (0) | 2021.05.01 |
[Swift] 특정 모서리만 코너 Round주기 (corner, border) (0) | 2021.04.30 |