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 flutterviewcontroller
- 안드로이드 FCM
- 안드로이드 앨범
- NotificationService Extension
- Flutter NativeView
- 스위프트 푸시
- 안드로이드 숏컷
- FlutterView MethodChannel
- 앱 꺼졌을 때 푸시 데이터 저장
- flutter 회전
- 안드로이드 바로가기
- swift 문자
- swift autolayout
- Swift flutterview
- 스위프트 카메라
- silent push
- 앱 백그라운드 푸시 데이터 저장
- 노티피케이션 익스텐션
- flutter rotate
- 플러터 뷰 컨트롤러
- swift sms
- 스위프트
- 안드로이드 에러
- 스위프트 웹뷰
- 스위프트 UserDefaults
- 스위프트 테이블 뷰 셀
- native flutter view
- Flutter UIKitView MethodChannel
- 스위프트 앨범
- 푸시 데이터 저장
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 |