ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [UIKit] - XIB와 NIB
    iOS/UIkit 2024. 1. 17. 11:19
    728x90
    반응형

    오늘은 xib와 nib에 대해서 알아보겠다.

     

    XIB&NIB

     

    UIkit 및 Appkit 프레임워크에서 사용되는 Interface Builder에서 생성 파일형식이다. 인터페이스 빌더라는 말은 여러분이 스토리 보드와 View Controller를 연결했을때 많이 봤을 것이다. 하지만 둘다 파일 형식이라 해도 어떤게 어떤 상황에서 쓰는지 차이를 알아야할것이다.

     

    NIB(NeXT Interface Builder)

    참고로 NeXTSTEP은 잡스가 NeXT 컴퓨터를 설립한 후에 개발한 운영 체제로, 1989년에 처음 출시된 macOS의 시초 운영체제라고 한다.

     

    XIB (XML Interface Builder)

    Xcode 3 이후부터 인터페이스 파일이 XML 기반으로 저장되어 XIB 라는 형식이 사용되었는데, 지금의 스토리보드를 구성할 수 있는 컴포넌트 요소는 xib파일로 만들게 된다. GUI환경에서 컴포넌트를 만들 수도 있고 XML언어로 작성하여 인터페이스를 구성할 수 있다.

     

    그래서 둘의 관계는 무엇이냐하면,  xib도 결국은 nib를 기반으로 만들어진 것이기 때문에, 우리가 UI를 만들고 빌드를 할 경우 xib파일이 컴파일 되면 nib로 변환되고 메모리에 로드된다.

     

    여기서 주의할게 storyboard는 xib파일과 다르다는것이다.

     

    스토리보드는 여러 뷰 및 View Controller의 관계를 정의하는 파일이고,

    XIB는 하나의 뷰 및 View Controller의 관계를 정의하는 파일이다.

     

    다시 말하자면 XIB는 하나의 화면에 있는 각각의 컴포넌트를 정의하는 파일이다. 스토리보드는 XIB를 포함하며, XIB파일에는 한개의 뷰의 대한 설정(뷰 옵션, 이벤트)만을 설정하고 스토리보드는 여러 뷰를 가질 수 있고 그 뷰들의 관계를 정할 수 있는것이다.

     

    그럼 NIB는 지금은 사용하지 않냐라고 할수 있는데, 우리가 직접 파일로 생성하지 않을뿐이지 꾸준히 쓰이고 있다. 예를 들자면

    class MyTableViewCell:UITableViewCell{
        
        @IBOutlet weak var userProfileImage:UIImageView!
        @IBOutlet weak var userContentLabel:UILabel!
        
        //셀이 렌더링(그릴때) 될때
        override func awakeFromNib() {
            super.awakeFromNib()
            print("MyTableViewCell 불러짐")
            
            //둥글게
            userProfileImage.layer.cornerRadius = userProfileImage.frame.width/2
        }
    }

    이건 해당 테이블 뷰의 셀을 그리는 클래스이다.

     

    여기서 awakeFromNIB()는 NIB파일에서 로드된 후 처음 한번 초기화 시키는 메서드인데, 직접 코드에서 명시적으로 NIB 파일을 로드하여 작업을 수행하는것이다. 

Designed by Tistory.