Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- vector
- Constraint
- class
- ios
- Swing
- Reverse Engineering
- 컴퓨터구조
- stl
- 순차 컨테이너
- UIView
- 2020.05.17
- Animation
- 스택
- 백준 1920
- 모달인듯 모달 아닌 뷰
- list
- 컴퓨터 구조
- 표준 템플릿 라이브러리
- BOJ
- 2020.04.19
- struct
- Reversing
- 백준 10828
- 2020.06.14
- Stack
- scroll
- 알고리즘
- SWiFT
- UIPanGestureRecognizer
- NavigationBar
Archives
- Today
- Total
야금야금
[iOS] 위에서 내려오는 modal 같은 UIView Scroll 본문
진행 중인 토이 플젝에서 이런 뷰를 만들고 싶었다.
처음엔 모달인가 라이브러리가 있나 했는데 없는 것 같아서 만들어보았다.
+) bottom sheet, floating panel, pan modal 등 아래에서 올라오는 애들은 많은데 위에서 내려오는 애는 사용성이 좋지 못해서 사용하지 않는다고 한다!
+) 안드로이드에서의 top sheet 예제: https://taskito.io/dev/android-topsheet
코드
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var movingView: UIView!
@IBOutlet weak var viewIndicator: UIView!
@IBOutlet weak var movingViewHeight: NSLayoutConstraint!
var isMonth = true
override func viewDidLoad() {
super.viewDidLoad()
// view setUp
movingView.layer.cornerRadius = 40
viewIndicator.layer.cornerRadius = viewIndicator.frame.height / 2
// panGesture - UIView에 스크롤 제스쳐 추가
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(scrollVertical))
movingView.addGestureRecognizer(panGesture)
}
@objc func scrollVertical(sender: UIPanGestureRecognizer) {
let dragPosition = sender.translation(in: self.view)
switch sender.state {
case .changed:
if isMonth {
movingViewHeight.constant = 453 + dragPosition.y
} else {
movingViewHeight.constant = 200 + dragPosition.y
}
case .ended:
if movingViewHeight.constant < 300{
self.movingViewHeight.constant = 200
isMonth = false
} else {
self.movingViewHeight.constant = 453
isMonth = true
}
default:
break
}
}
}
결과물
'iOS' 카테고리의 다른 글
[iOS] NavigationBar Fade Animation when scroll (0) | 2022.01.06 |
---|---|
[!] ERROR: Parsing unable to continue due to parsing error: 해결 (0) | 2022.01.04 |