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
- swift 문자
- FlutterView MethodChannel
- 플러터 뷰 컨트롤러
- 스위프트 UserDefaults
- Flutter UIKitView MethodChannel
- swift autolayout
- flutter rotate
- 노티피케이션 익스텐션
- NotificationService Extension
- swift sms
- flutter 회전
- 스위프트 앨범
- 안드로이드 앨범
- 안드로이드 숏컷
- Swift flutterview
- Swift flutterviewcontroller
- 스위프트 웹뷰
- Flutter NativeView
- 스위프트 테이블 뷰 셀
- native flutter view
- 앱 꺼졌을 때 푸시 데이터 저장
- 안드로이드 바로가기
- silent push
- 스위프트
- 스위프트 푸시
- 앱 백그라운드 푸시 데이터 저장
- 푸시 데이터 저장
- 안드로이드 FCM
- 스위프트 카메라
- 안드로이드 에러
Archives
- Today
- Total
Things take time
[SWIFT] 스크롤할 때, 하단의 탭바 숨기기(보이기) 본문
[로직]
테이블 뷰나 스크롤 뷰가 있는 뷰에서 상하단으로 드래그할 때마다 발생되는 이벤트에 탭 바를 숨기거나 보일때 필요한 기능이다.
[코드]
@available(iOS 2.0, *) public func scrollViewWillBeginDragging(_ scrollView: UIScrollView){ if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0{ print("y<0") changeBar(hidden: true) }else { print("y>0") changeBar(hidden: false) } }
당연히 딜리게이트는 되어있다고 가정한다. (테이블 뷰 는 스크롤 뷰를 기본적으로 딜리게이트 되어있음)
func changeBar(hidden:Bool){ guard let tabBar = self.tabBarController?.tabBar else { return; } // 탭바가 사라져 있다면 애니메이션(사라지는)효과를 주지 않음 if tabBar.isHidden == hidden{ return; } let frame = tabBar.frame; let offset = hidden ? (frame.size.height) : -(frame.size.height) let duration:TimeInterval = 0.5 tabBar.isHidden = false; UIView.animate(withDuration: duration, animations: { ()-> Void in tabBar.frame = frame.offsetBy(dx: 0, dy: offset) }, completion: { (isTrue) -> Void in if isTrue{ tabBar.isHidden = hidden; } /* isTrue 없이 그냥 파라미터 첫 번째것을 쓸때 if $0{ tabBar.isHidden = hidden; } */ }); } }
간단히 설명하면
현재 탭바 컨트롤러의 탭바 값을 얻어오고, 만약 원래 숨겨져 있는 상태인데 또 숨기라는 명령어가 오면 리턴시킨다. (반대도 마찬가지)
그리고 hidden 파라미터의 값에 따라 탭바의 프레임 높이에 대한 양, 음수값을 저장해 두고.. 0.5초의 사라지는 시간(기간)값을 설정한다.
그리고 탭바의 숨김 효과를 해제한다. (아래에서 위로 올라오든, 위에서 아래로 내려가든.. 애니메이션 효과를 보여줘야 하므로)
이 후 동작하면 된다.
$0이 의미하는 것은 첫 번째 파라미터를 의미한다.
'iOS (기능)' 카테고리의 다른 글
[SWIFT] UITextField의 Under Line 추가하기(밑줄) (0) | 2017.11.09 |
---|---|
[SWIFT] 문자 메시지 보내기 (1) | 2017.11.02 |
[SWIFT] UITbableView Header, 테이블 뷰 헤더 추가 및 고정 해제 방법, 헤더 구분선(Seperator)추가 (0) | 2017.10.27 |
[SWIFT] 오토레이아웃 코드로 (0) | 2017.10.27 |
[SWIFT] UITableView의 클릭 이벤트, 배경색상 없애기 (0) | 2017.09.18 |