UITabbar

Sunho·2022년 10월 29일
0

ios공부

목록 보기
5/8

backgroundimage

탭바 전체에 적용되는 배경이미지. 만약 신축성 속성이 있는 이미지이면 탭바는 적용 가능한 공간 전체가 채워질수 있도록 이미지 늘림. 신축성 속성 없으면 이미지를 타일형태로 반복처리.

SelectionIndicatorImage

현재 이탭이 선택되어 있음을 알려주는 이미지.


UiTabBarItem 객체

  • image : 탭이 선택되지 않은 상태일때 표시될 아이콘 이미지.
  • selectedImage : 탭이 선택된 상태일때 표시될 아이콘 이미지
  • titleTextAttribute: 탭 바 아이콘 이미지 아래 텍스트속성.

self.tabBarController?.tabbar.items?[0]
self.tabBarItem.Image

위 두가지 방식으로 탭바 아이템에 접근할수 있다.
1번째 방식은 탭바 컨트롤러> 탭 바를 통해 인덱스 번호를 통해 그 탭바아이템에 접근할수 있다.
2번째 방법은 현재 뷰 컨트롤러에 지정된 탭바 아이템만 접근 가능하다.

그런데 탭바 아이템과 달리 탭바는 뷰컨트롤러에 직접 연결되어 있지 않아서 self.tabBar같은 속성이 안됨! 뷰컨트롤러에서 탭바 바로 참조할수 없다. 그래서 탭바 컨트롤러를 거쳐서 탭바에 접근해야함 탭 바 관련 객체 중 뷰컨트롤러에서 직접 참조할수 있는것? 탭 바 컨트롤러, 탭바 아이템


탭바 관련된 코드는 각각의 viewdidload에서 구현한경우 그 뷰가 로드될때야 실행되기에 그렇게하면 안되고 앱이 초기화 완료되었을때 호출해주기 위해 AppDelegate 클래스 안의 application(_:didFinishLaunchingWithoption:)메소드에 코드작성.

  1. 윈도우 객체에 연결된 루트 뷰 컨트롤러를 읽어와 UITabBarController 타입 캐스팅
  2. root view controller통해 태 바 아이템 객체 배열을 가져온다
  3. 각각의 탭 바 아이템 커스텀화.

backgroundImage

할당된 이미지가 배경 영역보다 작을때 그만큼 반복배치된다. 만약 늘리고 싶으면 strectchableImage 메소드 사용.

BarTintColor

탭바를 단일색상으로 채우는역할인데 backgroundColor는 원하는 색상이 종종에러난다.
backgroundImage는 원하는 이미지 늘리거나 패턴처리등 옵션 다양하지만 BarTintColor는 패턴처리된 이미지를 사용할뿐이지 신축성 옵션X
BackgroundImage 탭바 영역 벗어나도 배경이미지 모두 표시. barTintColor는 탭바 영역내에서만 이미지 표현.
==> 이미지 수정하면 안되거나 이미지 크기 알수없을때는 barTintColor로 하자.


외형 프록시 객체: 화면요소별 속성을 공통으로 적용할 수 있는 객체.
==> 외형 프록시 객체에 속성 설정해두면 ,해당 타입으로 생성된 모든객체 해당 속성 적용. for문돌면서 관찰했던 것을 할필요 X

UITabBar.appearance() //탭바의 외형 프록시 객체
UITabBarItem.appearance() //탭 바아이템의 외형 프록시 객체.
let tbc = UITabBarContorller() 
tbc.view.backgroundColor = .white
self.window?.rootviewController = tbc
//여기까지가 탭바 컨트롤러 생성하고 루트뷰 컨트롤러로 등록.
let view1=ViewController()
let view2=SecondViewController()
let view3=ThirdViewController()
tbc.setViewControllers([view1,view2,view3],animated:false)
//뷰를 3개 생성하고 탭바컨트롤러에 등록.
...각 탭바 아이템 속성 설정../
profile
앱개발자

0개의 댓글