일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- CD
- CI
- 오블완
- jenkins
- 스프링
- DBMS
- AI
- libasm
- swift
- 42seoul
- 리눅스
- 소켓
- springboot
- MySQL
- javascript
- 인공지능
- 스프링부트 웹 소켓
- 프로그래밍언어론
- Spring
- IOS
- 티스토리챌린지
- JPA
- 아이패드다이어리
- 다이어리
- sql
- Xcode
- 스프링부트
- 네트워크
- 데이터베이스
- 오라클
- Today
- Total
Hi yoahn 개발블로그
[iOS] constraint, stackview 본문
1. StackView 에 UIImageView가 붙은 UIView 를 붙이면 제거가 제대로 안되는 문제
카드게임 앱을 만들다가, 게임참가자별 나눠준 카드를 화면에 출력하는 과정에서 버튼 아래의 것들은 하나의 스택뷰 vertical 로 넣고, 카드 이미지는 하나의 UIView에 넣고 스택에 넣었었는데 화면이 새로 바뀌는 과정에서 기존 뷰를 stack.removefromSuperView를 통해 제거하고 stack 에는 새로운 객체를 생성했는데 이미지가 바뀌는 것이 아니라 계속 새로 추가되는 문제가 있었다.
그래서 UIView에 넣었던 것을 UIStackView로 바꿔서 넣었더니 잘 동작했다!
이유는 잘 모르겠다. (혹시 아시는 분은 댓글로 알려주세요!!!)
2. 최상위 스택뷰의 제약조건 설정하기
코드로 설정하는 방법
먼저 뷰의 auto 제약조건을 꺼줘야 한다.
var stackView: UIStackView
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.topAnchor.constraint(equalTo: playerbutton.bottomAnchor, constant: 15).isActive = true
stackView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 20).isActive = true
stackView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -50).isActive = true
내부에 또 다른 뷰가 들어가는 경우 크기나 위치 설정이 필요한 경우 constraint를 이용해 제약조건 설정해야 원하는 위치와 크기로 잘 들어감
카드이미지가 들어간 스택 뷰의 imageView frame 값을 변경했더니 제대로 동작하지 않음
3. 화면 Refresh 하기
구현 조건에 쉐이크 이벤트가 일어나면 게임을 재시작하여 새로운 화면을 보여주는 조건이 있었다.
쉐이크 이벤트가 일어나는 화면에서 self.becomeFirstResponder()를 해주고, motionEnded를 오버라이드하여 shake 이벤트가 일어나는 경우 기존에 있던 stack 뷰를 제거하고 다시 생성하는 과정 진행
harrythegreat.tistory.com/entry/IOS-Auto-layout-코드-예시
[IOS] Auto layout 코드 예시
[SWIFT] 수동으로 auto layout 잡아주기 스토리보드로 하나하나 드래그해주어도 되지만 가끔은 수동으로 잡아주어야 할 때가 있다. 이럴경우 contentView.translatesAutoresizingMaskIntoConstraints = false처럼..
harrythegreat.tistory.com
'프로그래밍 언어 > iOS' 카테고리의 다른 글
[Xcode / iOS] File - Cocoa Touch Class / Swift File, Info.plist (0) | 2021.03.03 |
---|---|
[iOS] CustomStringConvertible, 시스템 로그 (0) | 2021.03.03 |
[iOS] view layout 잡기 (0) | 2021.02.08 |
[iOS] safeArea 사용하기 (0) | 2021.02.04 |
[iOS] 비율에 맞춰서 이미지 표시하기 (0) | 2021.01.26 |