TIP : OpenFlow(CoverFlow)

iOS/Tip&Tech 2010.09.05 13:56

OpenFlowTest.zip



- 클릭하는 이벤트 델리게이트 메서드에 추가
- 고정된 이미지 크기로 받아옴
- 로테이트시에 플로우프레임과 이미지 크기 변경

쓰시는 분들은..

위에 보고 따라하시고.. 따로 커스터마이징할 부분은 AFOpenFlowConstants.h 를 수정하시면 됩니당..



필요한데가 있어서.. 내 맘대로 고쳤다..

라이브러리로 쓰자니 위에 공간 영역주는부분이랑..  고정안된 이미지도 되는지 확인안해보고.. (안될거같다.. -.,-)

일단 고칠게 좀 많긴한데..

일단 내가 하는 프로젝트에서는 갖다박아놓으니 되니깐.. 일단 급한 마음에 갖다쓰자 -_-;

샘플로 만든다고 만들었는데.. 내가 어째 소덕후가 된 기분이라능..


< Portrait >


< Landscape >


2012. 04. 05. 수정


그냥 openflow보다 icarousel이게 더 나음 이거 쓰세여

http://cocoacontrols.com/platforms/ios/controls/icarousel


http://lambert.tistory.com/446


신고

'iOS > Tip&Tech' 카테고리의 다른 글

TIP : ComboBox  (0) 2011.01.12
TIP : APNS(Apple Push Notification Service)  (2) 2010.11.16
TIP : UITextField 정렬  (2) 2010.09.10
TIP : OpenFlow(CoverFlow)  (3) 2010.09.05
TIP : 아이폰 방향 상태  (1) 2010.09.05
TIP : Image Menu  (0) 2010.07.06

TIP : 아이폰 방향 상태

iOS/Tip&Tech 2010.09.05 11:28

1. 방향 상태 얻기

UIDeviceOrientation * orientation = [UIApplication sharedApplication].statusBarOrientation;
if ( UIDeviceOrientationIsPortrait(orientation) ) {
...
}
else if( UIDeviceOrientationIsLandscape(orientation) ) {
...
}
else if( orientation==UIDeviceOrientationUnknown) {
...
}

[[UIDevice currentDevice] orientation] : 아이폰이 누웠을때 UIDeviceOrientationUnknown 를 호출하기 때문에 쓰기 힘들다.

[UIDevice currentDevice] beginGenerationgDeviceOrientationNotifications];
프로그램 시작시 호출해야 시작할때부터 로테이션 상태를 얻을 수 있다.
그래도 안되면.. 나올때까지 계속 재귀적으로 호출해준다. 그러면 나온다..
while(orientation!=UIDeviceOrientationUnknown) {
  orientation= [[UIDevice currentDevice] orientation]);
}
이런식으로 해줘도 될거 같긴 한데.. 너무.. 메모리 많이 잡아먹을듯..
performSelector로 afterDelay 조금 조절해가면서 하자.. 물론 나는 0초로.. 하지만서도..


2. 방향 상태 설정하기

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientation];

@interface UIDevice (MyPrivateNameThatAppleWouldNeverUseGoesHere) // Warning 뜨니깐 추가해주자
 - (void) setOrientation:(UIInterfaceOrientation)orientation;
 @end

 
[상태바 방향 설정]

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientation animated:YES];

[시작시 로테이션 줄때]
*.plist 에서 Key값 Initial Interface orientation 에서 Value 수정(SDK 4.0이후로 plist가 바뀐듯 싶음..)

참고 : http://www.dejoware.com/blogpages/files/iphone_programming_landscape_view_tutorial.html


3. 로테이션 못받아오는 상황

(1) UINavigationController, UITabbarController 가 상위에 있는 경우
이런 경우는 하위의 ViewController에서 암만 shouldAutorotateToInterfaceOrientation에서 리턴값을 YES로 줘도 안돌아간다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

그냥 상위 뷰컨트롤러(네비게이션컨트롤러, 탭바컨트롤러)를 서브클래싱해서 위의 함수를 오버라이딩시킨다.

참고 : http://developer.apple.com/library/ios/#qa/qa2010/qa1688.html

[하위뷰컨트롤러, 뷰에서 이벤트를 받기]
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION_ROTATE" object:nil];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotate) name::@"NOTIFICATION_ROTATE" object:nil];
}

- (void) viewWillDisappear:(BOOL)animated {
 [[NSNotificationCenter defaultCenter] removeObserver:self name::@"NOTIFICATION_ROTATE" object:nil];
}


(2) 기타 상황
이런 경우 못받아옴.. 크윽.. 멋대로 릴리즈하지 맙시다

VC* vc= [[VC alloc] init];
 [vc.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
 [window addSubview:vc.view];
 //[vc release];

 
2011.09.20. UIDeviceOrientationDidChangeNotification 을 이제야 알았따는건 충격과 공포
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

- (void)orientationChanged:(NSNotification *)notification
{
    UIDeviceOrientation o = [[UIApplication sharedApplication] statusBarOrientation];
}
아이폰에서 회전은 은근히 많이 쓰인다. 암것도 모르고 시작했을때는 가로모드까지 지원하도록 만드는게 개발시간이 평소보다 1.5-2배정도는 시간이 더 걸렸다.

가로보기와 세로보기 모드의 보여주는 폭만변경된다는 가정하에서는 개발단계에서 AutoresizingMask의 특성과 개념, frame과 bounds를 제대로 구분할줄 알고 설정할줄 안다면 일일히 로테이션 메시지받고 프레임조정을 하지 않아도 그다지 어렵지 않게 조절할수있다.
신고

'iOS > Tip&Tech' 카테고리의 다른 글

TIP : ComboBox  (0) 2011.01.12
TIP : APNS(Apple Push Notification Service)  (2) 2010.11.16
TIP : UITextField 정렬  (2) 2010.09.10
TIP : OpenFlow(CoverFlow)  (3) 2010.09.05
TIP : 아이폰 방향 상태  (1) 2010.09.05
TIP : Image Menu  (0) 2010.07.06

TIP : Image Menu

iOS/Tip&Tech 2010.07.06 10:33
아이폰에서 이미지 메뉴를 꽤 자주쓰게 된다..

Segment Control을 가지고 어떻게 만들어보려고 했는데..

하다보니 이건 아니다 싶어 기냥 따로 만들었다..

첨엔 컨트롤을 서브클래싱해서 할까 하다가.. 그냥 뷰에서 터치이벤트만 받아도 문제없이 구현되더라고..

가로로 가는 메뉴만 구현햇다..

아직 세로로는 쓸일이 없어서..




사용법..

1. 뷰에 추가하기.
ImageMenu * menu = [[ImageMenu alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, HEIGHT_IMAGE_MENU)
information:[NSArray arrayWithObjects:@"tab_01.png", @"tab_02.png", @"tab_03.png", nil]];
[menu addTarget:self action@selector(selectMenu:)];
[self.view addSubview:menu]
[menu release];

2. 선택시 이벤트.
- (void) selectMenu: (id) sender {
switch([sender index]) {
case 0:break;
case 1:break;
..
}
}

신고

'iOS > Tip&Tech' 카테고리의 다른 글

TIP : ComboBox  (0) 2011.01.12
TIP : APNS(Apple Push Notification Service)  (2) 2010.11.16
TIP : UITextField 정렬  (2) 2010.09.10
TIP : OpenFlow(CoverFlow)  (3) 2010.09.05
TIP : 아이폰 방향 상태  (1) 2010.09.05
TIP : Image Menu  (0) 2010.07.06


티스토리 툴바