본문 바로가기

개발/App Developer

자동회전과 자동크기 조절 * 세로보기 모드 (portrait - 길고 얇은) / 가로보기 모드 (landscape - 짧고 옆으로 넓은) * 세로보기 모드에서 뷰는 너비 320 px / 높이 460 px (상태 표시줄이 없다면 높이는 480 px) * 가로보기 모드에서 너비는 480 px / 높이 300 px (상태 표시줄이 없다면 높이는 320 px) * 애플리케이션에서 회전 기능을 관리하는 3가지 기능 - autoSize 속성으로 회전 처리 하기 - 회전할 때 뷰 재구성하기 - 뷰 전환하기 ( 세로보기 모드 / 가로보기 모드 ) * autoSize 속성으로 회전 처리하기 - 아이폰에서 AutoSize 속서을 사용하면 중력센서를 사용하여 기기 회전에 따른 처리를 할 수 있다. 클래스명 ViewController.m 에서 sho.. 더보기
멀티뷰 애플리케이션 * 탭바 / 툴바 - 탭바 : 두 개 이상의 대상 중 단 하나만 고를 때 사용한다. 실제 애플리케이션에서 탭바는 두 개 이상의 컨텐츠 뷰를 선택하기 위해서 사용 - 툴바 버튼과 다른 특정 컨트롤을 담을 수 있지만 상호배타적이지 않다. 일반적인 작업을 수행하는 버튼을 나타내기 위해 사용된다. 툴바 버튼은 다른 아이폰 컨트롤과 다르다. 툴바 버튼은 오직 하나의 액션만 지원하고 다른 아이폰 컨트롤의 Touch up inside 이벤트 같이 적절한 순간에만 그 액션을 유발한다. * -(void)viewDidLoad - nib이 로드 될 때 호출되는 UIViewController 의 매소드이다. viewDidLoad 메서드는 상위 클래스에 정의되어 있고 뷰의 로딩이 끝났을 때 호출되기 때문에 뷰의 로딩 완료시점을.. 더보기
탭바와 피커 * 델리게이트와 데이터 소스 - 피커는 여러 가지 작업을 델리게이트에게 위임한다. 그 중에서도 가장 중요한 것은 각 행과 해당 행에 속한 컴포넌트 중에서 실제로 무엇을 그릴지를 결정하는 일이다. 피커는 델리게이트에게 문자열 또는 주어진 컴포넌트의 특정 위치에 내용을 그리기 위한 뷰를 요청한다. - 데이터 소스는 피커에게 몇 개의 컴포넌트와 몇 개의 목록이 각각의 컴포넌트를 구성하고 있는지 알려준다. 데이터소스는 델리게이트와 유사한 방식으로 동작하지만, 매서드가 미리 정해진 시간에 호출된다는 점이 다르다. * 탭바 아이콘 - 아이콘은 24 * 24 픽셀 크기여야 하고, PNG 포멧으로 저장되어야 한다. 또 아이콘 파일은 투명 배경을 가지고 있어야 한다. 일반적으로 중간 크기의 회색 아이콘이 탭바에서 가장 .. 더보기
테이블 뷰 입문 * 테이블 - 테이블은 데이터의 목록을 표시한다. - 테이블 목록의 각각의 항목은 행(row), 각 행마다 열(column)은 하나만 있다. - 테이블 뷰는 테이블에 있는 데이터를 보여주는 뷰이고, UITableView 클래스의 인스턴스이다. 테이블에 각각의 행은 UITableViewCell 클래스로 구현된다. 그래서 테이블 뷰는 테이블의 전체적인 모양을 담당하는 객체이고, 테이블 뷰 셀이 테이블의 각각의 행을 그리는 일을 담당한다. - 테이블 뷰는 테이블의 데이터를 저장하는 역할은 하지 않는다. 단지 현재 보여주는 행을 그릴 때 필요한 데이터만 저장하낟. - 테이블 뷰의 설정 데이터는 UITableViewDelegate 프로토콜을 따르는 객체에서 구하고, 각 행의 데이터는 UITableViewDataS.. 더보기
리눅스 쬐금 ========================================== ★디렉토리 복사 ========================================== ※cp -R 원본^대상 =cp /work/bb.txt /root =cp bbb.txt /root ※현재 디렉토리에 복사한다 =cp /work/bbb.txt . ※이름변경해서 복사(aaa로 변경해서복사..) =cp /work/bbb.txt /root/aaa.txt =========================================== ★디렉토리이동(복사와 동일) =========================================== ※mv 원본파일(디렉토리) 대상디렉토리 =mv /work/aaa.txt /root ※디렉토리이.. 더보기
tableView 의 클래스와 프로토콜 이해 테이블을 사용자 편의에 맞게 사용하려면 다음 클래스와 프로토콜을 이해해야 한다. UITableView : 테이블 뷰 자체를 의미하는 클래스이다. 테이블을 생성하고, 스타일과 모양을 결정한다. UITableViewDataSource : 데이터 소스 델리게이트 이며 테이블에 보여줄 데이터를 관리한다. 화면에 표시될 셀 뷰 객체를 리턴하고, 테이블에 섹션이 몇 개 있는지, 각 섹션에는 몇 개의 항목이 있는 지 등을 이 프로토콜(컴퓨터간에 정보를 주고받을 때의 통신방법에 대한 규칙과 약속)의 매서드를 호출해서 알아낸다. UITableViewDelegate : 각 행의 높이는 얼마로 할지, 들여쓰기를 얼마로 할지, 또한 셀이 선택되었을 때 무슨 일을 해야 하는 지 등을 결정할 수 있다. UITableViewCel.. 더보기
UITableViewDataSource 프로토콜의 주요 메서드 tableView:cellForRowAtIndexPath - 셀에 해당하는 뷰를 요청한다. UITableViewCell 을 상속받는 객체를 리턴해야 한다. (보통 UITableViewCell 을 그냥 사용) numberOfSectionsInTableView - 테이블 뷰의 섹션이 모두 몇 개인지를 알려줘야 한다. ( 1 또는 섹션의 수 만큼) 예문) -(NSInteger)numberOfsectionsInTableView:(UITableView *) tableView{ return [self.history count]; } tableView:numberOfRowsInSection - 섹션에 셀이 모두 몇 개 존재하는 지를 묻는다. 전체 항목의 개수를 리턴 (아마 numberOfSectionInTableVi.. 더보기
프로퍼티의 retain 속성 프로퍼티의 retain 속성은 setter, 즉 해당 값을 새로운 값으로 변경할 때의 행동을 결정하는 중요한 키워드 이다. self.history = AA; 구문은 다음과 같이 처리된다. [history release]; history = [AA retain]; 즉 어떤 객체(AA)를 이 속성 값으로 설정하면 이 객체에 retain 을 호출해서 가지고 있겠다는 의미가 된다. 객체의 값을 다룰 때 보통 이 속성을 사용합니다. 세터를 생성할 때, 컴파일러는 전달된 객체는 리테인하고, 기존에 갖고 있는 객체는 릴리스 합니다. 더보기
Lazy loading 기법 어떤 속성(프로퍼티)을 얻으려고 할 때 (getter 가 호촐될 때) 같은 이름의 속성 메서드가 호출된다. 만약 현재 값이 nil 이면 새로운 배열을 생성한다. if(history == nil){ NSArray *may = [NSArray arrayWithObjects:~ } history = [[NSArray arrayWithObjects:mmarch,april,may] retain]; 이와 같은 방식을 게으른 로딩(Lazy loading) 이라고 한다. 즉 처음에는 nil 값을 가지고 있다가 누군가가 사용하려고 하는 시점이 되어서야 뒤늦게 객체를 생성하는 방법이다. 마찮가지로 뷰 컨트롤러가 메모리 경고를 받아서 뷰를 언로드하게 될 때는 history에 nil 을 설정하여 배열 객체를 간단히 해제할 수.. 더보기
UITableViewCell 객체의 생성과 초기화에 대한 방법(뷰 재활용 개념) static NSString = kCellIDentifier = @"OilViewCell"; //여기 kCellIdentifier 서 'k' 란 상수는 단지 이름을 붙이는 관례임 (애플에서) 테이블 뷰는 화면 내용을 그리기 위해서 테이블 각 행에 해당하는 테이블 뷰 셀(TableViewCell) 객체를 요청한다. UITableViewCell* cell = [tableView dequeuereusableCellWithIdentifier:kCellIdentifier]; 이 때 UITableViewCell 또는 이 클래스를 상속받는 객체를 리턴해줘야 하는 데 그 전에 고려할 부분이 하나 있다. 테이블 뷰는 화면에 표시할 모든 행에 대해서 UITableViewCell 객체를 요구하는데, 매번 UITableVie.. 더보기