안드로이드에서 view에 visibility 속성은 view를 화면에 노출할 것인지 여부를 설정합니다. 단순하게 노출 여부를 설정하기도 하지만
비노출시 2가지를 선택할 수 있습니다.
눈에는 보이지 않지만 영역은 존재하는 경우 와 눈에도 보이지 않고 영역조차 사라지는 경우로 나뉩니다. ( invisible / gone )
※노출하는 경우 visible
안드로이드에선 gone 옵션을 줄 경우 다음 순서에 있거나 constraint로 연관되어 있는 view가 영역을 저절로 채워줍니다.
하지만 iOS에서 오토레이아웃을 사용했을 경우 위 그림상 'B' 뷰를 hidden 처리할 경우 invisible처리 처럼 영역은 그대로 남아 있어 별도로 처리해야 합니다.
1. hidden처리시 Constraint를 직접 조정한다.
2. StackView를 사용한다.
| Constraint 직접 조정
아래 사진처럼 버튼 세개의 constraint를 지정하고, 도큐먼트 영역이나 스토리보드에서 우클릭으로 보조 편집기 영역에 끌어 놓으면 Constraint를 변수로 사용할 수 있습니다.
class ViewController: UIViewController {
@IBOutlet weak var secBtnTopConst: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
secBtnTopConst.constant = 100
}
}
그렇게 생성된 constraint 변수의 값을 hidden시 'constraint.constant = 0'으로 조정하면 됩니다.
| StackView 사용
StackView의 높이는 내부에 있는 view의 영향을 받기 때문에 hidden 처리할 view를 stackView로 감싼 후 hidden 처리하면 자연스럽게 영역이 줄어듭니다.
ex) 위의 경우 2번째 버튼을 statckView에 넣고 stackview와 다른 버튼들의 constraint를 설정
iOS를 개발하면서 안드로이드와 다르게 느껴지는 부분들을 위주로 기술하겠습니다.
감사합니다.
'아이폰 > 안드 개발자 시점' 카테고리의 다른 글
[iOS] UILabel에 클릭 이벤트 붙이기 (0) | 2022.07.04 |
---|---|
[iOS] Tableview 만들기 ( Custom Tableview Cell ) (0) | 2022.03.07 |
[iOS] CollectionView 선택한 아이템 UI 변경하기 (0) | 2021.08.26 |
[iOS] CollectionView로 구현하는 페이징 & 리스트 (2) | 2021.07.16 |