일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 테스트 자동화
- RxKotlin
- mvvm
- rx
- Android
- node.js
- paging
- Android 13
- node
- junit
- 동영상
- mysql
- 인앱결제
- Reactive
- MediaPlayer
- databinding
- PagingLib
- Observable
- SwiftUI Tutorial
- php
- SWIFTUI
- MotionLayout
- list
- android13
- MediaSession
- Koin
- Kotlin
- google play
- Animation
- GCP
- Today
- Total
봄날은 갔다. 이제 그 정신으로 공부하자
배경이 투명한 ViewController 만들기 본문
개발하다보면 전체 화면 중 일부만 투명하게 처리해야 경우가 종종 있습니다.
대부분의 경우 UIAlertView를 사용하면 되지만 간혹 투명한 부분을 dim 처리해야 하는 등 UIAlertView로 처리하기 곤란한 경우가 있는데 이런 경우 ViewController에서 일부 영역을 dim 처리하는 방법으로 문제를 해결 할 수 있습니다.
우선 storyboard에 ViewController를 만들고 dim 처리할 부분과 아닌 부분을 구분해서 화면을 구성합니다.
저는 아래 2/5 정도의 영역에만 컨텐츠가 보이고 나머지 부분은 dim 처리되도록 화면을 구성해 보았습니다.
아래 그림의 흰색 부분이 아무것도 없는 부분으로 투명처리되는 부분 입니다.
투명 처리를 위해 해당 ViewController가 load되는 viewDidLoad() 함수에 아래 코드를 추가해줍니다.
아래와 같이 backgroundColor를 alpha을 조정해 투명도를 설정해 준 후,
view.backgroundColor = UIColor.init(_colorLiteralRed: 0, green: 0, blue: 0, alpha: 0.5)
isOpaque값을 true로 설정해 투명 처리가 되도록 합니다.
view.isOpaque = false
isOpaque는 기본 값이 true로 해당 값이 true이면 iOS는 해당 view를 불투명하게 처리합니다.
즉 아무리 backgroundColor를 변경해도 isOpaque 값을 false로 변경하지 않으면 투명 처리가 되지 않습니다.
전체 코드를 아래와 같습니다.
// 호출하고
self.present(vc, animated: true, completion: nil)
// view가 로드 될 때 투명값을 설정해줍니다.
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.init(_colorLiteralRed: 0, green: 0, blue: 0, alpha: 0.5)
view.isOpaque = false
...
}
'iOS Tip' 카테고리의 다른 글
set, get, willSet, didSet (0) | 2022.04.13 |
---|---|
코딩으로 가로 스크롤 뷰 만들기 (0) | 2022.04.05 |
이미지 라운드 처리하기 (0) | 2022.03.25 |
5. SwiftUI Tutorial - animation (0) | 2022.03.16 |
3-2. SwiftUI Tutorial - ObservableObject, @Published, @ObservedObject, @EnvironmentObject (0) | 2022.03.12 |