Do Not Think!!!

Posted
Filed under 01010101
아이폰 기본 앱을 보면,
스크롤을 아래로 내린 상태에서 아이폰의 상단 상태바를 터치하면,
스크롤이 맨 위로 올라가는 기능이 있습니다.

이 기능은 아이폰 기본 기능인데,
(The scroll-to-top gesture is a tap on the status bar)
개발을 하다보면 이 기능이 동작이 안하는 경우가 있습니다.

보통 별도로 탭을 구현하는 경우 이 기능이 동작 안하는 경우가 많습니다.

이 기능은
UIScrollView 의 scrollsToTop 속성이 YES 로 되어 있으면
UIScrollViewDelegate 의 scrollViewDidScrollToTop 를 호출하기 때문에 동작하게 됩니다.

하지만, UIScrollView 가 여러개 있으면 이 동작이 무시됩니다.

즉, Status Bar 를 터치해도 스크롤이 올라가는 동작이 작동을 안하게 됩니다.


여기까지는 SDK 문서에 나온 내용이구요...
UIScrollView 를 여러개 사용하는 앱에서 이 동작을 사용하는 방법은 다음과 같습니다.


첫 번째 방법은 메인 윈도우에 스크롤뷰를 하나만 붙입니다.

다른 방법은 스크롤 뷰의 scrollsToTop 속성을 하나만 YES 로 하고 나머지는 다 NO 로 설정합니다.


첫 번째 방법은

예를들어 Custom Tab 컨트롤러를 만들어서 뷰를 전환하는 경우에 사용합니다.
아래 코드에서 형광펜으로 칠한 부분입니다.
기존 스크롤뷰를 없애고, 새로운 스크롤 뷰를 붙여서 스크롤 뷰를 하나만 유지합니다.
(oldViewController, newViewController 는 스크롤뷰로 뷰를 구성했습니다.)
[CODE]//  현재 탭 화면을 숨깁니다.
UIButton *oldTabButton = [tabButtons objectAtIndex:selectedTabIndex];
if (nil != oldTabButton) {
    oldTabButton.selected = NO;
   
    UIViewController *oldViewController = [tabControllers objectAtIndex:selectedTabIndex];
    [oldViewController.view removeFromSuperview];
}

// 새로운 탭 화면을 보이게 합니다.
selectedTabIndex = tabIndex;
UIButton *tabButton = [tabButtons objectAtIndex:selectedTabIndex];
tabButton.selected = YES;

UIViewController *newViewController = [tabControllers objectAtIndex:selectedTabIndex];
[contentView addSubview:newViewController.view];
[/CODE]

두 번째 방법은

한 화면에 두 개의 스크롤뷰가 있는 경우에 사용합니다.
아래 코드는 조금 특수한 경우인데, 한 화면에 스크롤뷰와 웹뷰가 같이 있는 경우입니다.
스크롤뷰가 여러 개 있을 경우에는 메인 스크롤뷰의 scrollsToTop 속성만 YES 로 만들어야 하기 때문에
웹뷰의 스크롤뷰는 scrollsToTop 속성을 NO 로 만들었습니다.
(웹뷰는 subview 가 스크롤뷰로 구성되어 있기 때문에 아래 코드처럼 스크롤뷰를 따로 찾아야 합니다.)
[CODE]// 웹뷰의 스크롤뷰를 찾습니다.
for (UIView *v in webView.subviews) {
    if ([v isKindOfClass:[UIScrollView class]]) {
        ((UIScrollView *)v).scrollsToTop = NO;
    }
}[/CODE]

Posted
Filed under 01010101
아이폰 개발을 하면서 지도를 사용하다가 발생한 문제에 대한 포스팅입니다.

아이폰 개발을 하면서 아래 그림처럼 지도를 사용했습니다.
현재 뷰에서 버튼을 누르면 지도를 보여주도록 했습니다.
그런데 지도를 닫고 나면 앱이 죽는 문제가 발생을 했습니다.
물론 지도를 닫으면서 release 를 시켰구요...

사용자 삽입 이미지

1 지도를 부르고, 2 지도를 닫고, 잠 시 후 앱이 꺼지는 문제 발생



한참을 찾아본 결과
맵뷰에 delegate 를 지정해서 사용하는데, 맵뷰가 이 delegate 를 잡고 있어서 발생한 문제였습니다.
즉, 맵뷰가 이미 release 된 delegate 에 메시지를 보내기 때문에 문제가 발생하는건데,

이 코드를
[code]- (void)dealloc {
    [mapView release];
}[/code]

이 코드처럼 수정하면 됩니다.
[code]- (void)dealloc {
    mapView.delegate = nil;
   [mapView release];
}[/code]

Posted
Filed under 01010101
저희가 만든 앱 중에 아이폰 배경화면 이라는 앱이 있습니다.

기본 텍스쳐에 아이폰 아이콘에 맞춰 프레임을 추가한 배경화면을 제공하는 앱인데,
얼마전 배경화면이 잘 안맞다는 버그 리포트가 왔습니다.

해당 문제를 수정하면서 확인한 결과,
아이폰OS 가 업데이트 되면서 아이콘 위치가 약간 변경되었네요.

오른 쪽 두 줄이 모두 오른쪽으로 2px 씩 옮겨졌고,
아래 두 줄은 아래쪽으로도 1px 씩 옮겨졌네요.

일단 수정해서 업데이트 신청을 했는데,
정확하게 아이콘 위치가 언제부터 변경이 됐는지 알 수가 없네요.


Posted
Filed under 글로 기록하기
2011년은 바쁘게 시작하네요.

작년에 등록했던
국내 유명인들 트위터를 한 눈에 볼 수 있는 유명/연예인 트위터 앱을 바로 업데이트 해서 등록 신청을 했습니다.
사용자 삽입 이미지


작년(?) 말에 심사에 들어갔던
전국 모든 갤러리와 미술관 전시정보를 한 곳에 모아 놓은 미술전시정보 - 아트데이 앱이 앱스토어에 등록이 되었구요~
사용자 삽입 이미지


두 번째 카메라 앱 셀카가 반대로 나올 때 앱이 심사에 들어갔습니다.
사용자 삽입 이미지


지금 한창 개발중인 앱도 있는데, 이건 언제 등록할 수 있을지 모르겠네요 ㅜㅜ




Posted
Filed under 사진으로 기록하기
그동안 사용하던 헤드폰이 부러져서 ㅜㅜ
헤드폰을 새로 구입했습니다.

몇 개 헤드폰을 고민하다가, 홍대에 있는 이어폰월드에 가서 직접 들어보고
AKG K518LE를 선택했습니다.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지



요건 부러진 헤드폰...
사용자 삽입 이미지

부러진 오디오테크니카 ATH-FC7






아이폰4 카메라
Posted
Filed under 컬트스토리

[우리가 만든 앱을 소개합니다] 아이폰 배경화면 - 고화질 명품 이미지 1.2

'아이폰 배경화면'앱은 원래 Zebra 패턴을 선호하는 저희 디자이너가 개인적으로 쓸 요량으로 아이폰 배경화면을 몇 개 만들었는데,
주변에서 공유해달라는 요청이 생겨서 나온 앱 입니다.


프리미엄 배경화면

저희 디자이너가 직접 제작한 배경화면으로, 아이폰4 레티나 디스플레이에 대응하여 초고화질 이미지로 제작했습니다.
고화질 이미지로 제작하다보니 각 이미지별 용량이 2MB에 육박할정도로 용량의 압박이 심합니다.
초기에는 아이폰4 레티나 디스플레이만 지원할 예정이었지만, 아이폰3G/3GS 까지 지원하도록 확장을 했습니다.


현재 총 42종의 프리미엄 이미지를 제공하고 있고, 향후 지속적으로 업데이트가 이루어질 계획입니다.



배경화면 갤러리

플리커에 올라온 이미지들 중에서, 아이폰 배경화면만을 검색해서 보여주는 갤러리입니다.
너무 많은 아이폰 배경화면이 있어서 배경화면을 선택하는 어려움이 있기 때문에,
카테고리/태그 등을 이용한 분류 기능을 추가할 계획입니다.
마음에 드는 이미지는 바로 저장할 수도 있고, 앱 프레임을 씌우는 작업을 해서 저장할 수도 있습니다.



Make

아이폰 카메라롤에 있는 사진에 앱 프레임을 씌워서 자신만의 배경화면을 만드는 기능입니다.
프레임 색은 빨/주/노/초/파/남/보 의 무지개 색과 흰색/검정색을 선택할 수 있고,
투명도를 조절할 수 있습니다.



배경화면 설정하기

배경화면 앱에서 아이폰 배경화면을 바로 설정할 수 있으면 좋을텐데,
아쉽게도 애플에서 해당 API를 제공하고 있지 않기 때문에,
아이폰 카메라롤에서 배경화면을 설정해야 합니다.

Posted
Filed under 사진으로 기록하기
어제 주문한 컴퓨터가 왔어요~~~
사용자 삽입 이미지



본체 x2
사용자 삽입 이미지



24인치 모니터 x2
사용자 삽입 이미지



그리고 디자이너가 사용할 30인치 모니터
사용자 삽입 이미지





아이폰4 카메라

Posted
Filed under 사진으로 기록하기
1011 휘닉스파크 시즌권이 도착했습니다.
시즌권을 담은 종이 봉투 맨 앞에 프리미어리거라고 써져 있네요.
(휘팍이 프리미어리그라는걸까요?)
사용자 삽입 이미지



시즌권과 함께 시즌권 케이스는 안들어 있고, 시즌권 케이스 교환권만 들어있네요.
나중에 따로 받아야 하나봅니다.
사은품으로 객실 할인권이 들어있는데, 시즌방을 잡아서 객실을 따로 쓸 일이 있을까요? -_-;
사용자 삽입 이미지



정말 쓸모없는 종이가 하나 들어있습니다.
처음에는 립케어 교환권, 아니 할인권이라도 되는줄 알았는데...
그냥 광고 전단지입니다.
사용자 삽입 이미지




아이폰4 카메라

Posted
Filed under 컬트스토리

[우리가 만든 앱을 소개합니다] 연락처백업정리 – 센스연락처정리 1.5


'센스연락처정리'앱은 아이폰 연락처의 이름을 관리하는데 불편함을 느끼고, 좀 더 편하게 연락처 이름을 관리할 수 있었으면 하는 바램에서 출발한 앱 입니다.

센스연락처 메인화면

앱의 기능을 소개하는 메인화면입니다.
(앱 첫화면에서 메뉴를 터치하면 해당 메뉴탭으로 바로 이동합니다.)
사용자 삽입 이미지


연락처 이름관리

연락처의 이름을 쉽게 관리해주는 앱의 (원래는 메인)기능입니다.
아이폰에 연락처를 여러 개 가진 경우 ...
연락처를 자주 교환하는 경우 ...
연락처 이름이 성/이름에 제각각으로 저장된 경우 ...
제각각인 이름을 쉽게 정리해주는 앱이 있었으면 ...
아이폰 기본 연락처앱을 사용하면서 서로 다른 형식의 연락처를 저장하는 경우가 많이 있습니다.
(개인마다 연락처를 저장하는 형식이 다르기 때문에, 연락처를 교환하면 이런 문제가 많이 발생하죠.)
서로 다른 형식의 연락처를 아이폰에서 직접 정리하려면 너무나 불편하기 때문에, 이 불편함을 덜어주기 위한 기능입니다.

- '성'과 '이름'으로 분리해주는 기능입니다.

아이폰은 '성'과 '이름'을 따로 나눠서 저장합니다.
하지만 종종 이름이 하나로 합쳐 져서 저장된 연락처들을 볼 수 있습니다.
이 기능은 이렇게 하나로 저장된 이름을 '성'과 '이름'으로 분리해주는 기능입니다.

- '성'과 '이름'을 합쳐주는 기능입니다.

연락처 이름을 '성'과 '이름'으로 나눠서 저장하는 사람만 있는 것은 아닙니다.
누군가는 이름을 하나로 합쳐서 저장하기도 하죠.
이 기능은 성'과 '이름'으로 나눠주는 기능과는 반대로 '성'과 '이름'을 하나로 합쳐주는 기능입니다.

- '이름'필드에 저장된 회사나 단체이름을 '직장'필드로 옮겨주는 기능입니다.

연락처에는 사람만 저장되는 것은 아니죠. 회사 연락처가 저장되는 경우도 있죠.
아이폰에서는 이름과는 별도로 회사/단체이름을 저장하는 '직장'이라는 필드가 있습니다.
이 기능은 '이름'필드에 저장된 회사/단체이름을 '직장'필드로 옮겨주는 기능입니다.

- '직장'필드에 저장된 이름을 '이름'필드로 옮겨주는 기능입니다.

한쪽으로 옮겼으면 반대로 옮기는 기능도 필요하죠~
이 기능은 반대로 '직장'필드에 저장된 이름을 '이름' 필드로 옮겨주는 기능입니다.

- 회사정보(직장/부서/직책)를 이용해서 호칭을 만들어주는 기능입니다.

전화나 문자가 오면 화면에 이름 옆에 호칭이 함께 표시되기 때문에, 호칭이 있으면 누구인지 쉽게 알 수 있습니다.
이 기능은 호칭이 없으면 회사정보를 이용해서 호칭을 자동으로 만들어주는 기능입니다.
호칭을 만드는 회사정보는 직장, 부서, 직책 등의 정보입니다.



중복 연락처 합치기

연락처를 하나씩 지우기 불편하니까 여러 개를 한 번에 지우는 기능이 있었으면 ...
중복된 연락처를 하나로 합치는 기능이 있었으면 ...
중복 연락처 합치기여러 연락처 삭제하기 기능은
이름을 정리하는 기능만큼은 아니지만 불편했던점을 채워주길 바라면서 만든 기능입니다.
사용자 삽입 이미지

- 중복된 연락처를 하나로 합쳐주는 기능입니다.

현재는 중복 연락처를 직접 선택해야하지만, 중복된 연락처를 검색해서 추천해주는 기능은 추후 업데이트 예정입니다.



연락처 삭제하기

사용자 삽입 이미지

- 여러 연락처를 한 번에 삭제해주는 기능입니다.

연락처가 완전히 삭제되기 때문에 연락처를 삭제하시기 전 백업을 꼭 해주세요.
사용자 삽입 이미지



연락처 백업하기

아이튠즈를 이용해서 동기화하는 게 익숙하지 않고,
아이튠즈가 없는 경우 연락처 백업이 어려우니까 연락처를 이메일로 백업시켜주는 기능이 있었으면 ...
백업기능은 센스연락처정리 앱의 메인 기능으로 자리 잡은 기능입니다.
자신의 이메일을 통해서 연락처를 백업하기 때문에, 별도의 서버가 필요하지 않습니다.
(그렇기 때문에 개인 연락처 정보가 유출될 위험도 없어요.)
백업 된 연락처는 아이폰/아이팟터치/아이패드/맥의 기본 주소록과도 호환되고, 구글 주소록과도 호환됩니다.
(MS 아웃룩과는 호환이 잘 안돼요. ㅜㅜ)

- 연락처를 이메일 첨부파일로 백업해주는 기능입니다.

연락처를 백업하기 위해서는 아이폰 이메일 설정이 되어 있어야 합니다.

- 백업된 연락처는 아이폰 기본 이메일 앱을 이용해서 복원할 수 있습니다.

백업 된 연락처는 이메일을 열어서 첨부파일을 터치만 하면 바로 복원됩니다.
이건 미처 생각하지 못했었는데,
이메일에 첨부된 연락처 파일을 터치하면 바로 연락처에 추가되는 아이폰 기본 기능을 모르시는 분들이 생각보다 많더라구요.
그래서 연락처 복원 방법을 메일 내용으로 추가했어요.
연락처를 복원하는데 도움이 좀 됐으면 좋겠습니다.

- 백업 된 연락처의 그룹정보를 복원하는 기능입니다.

센스연락처정리 앱을 통해서 백업 된 연락처 파일에는 그룹정보가 포함되어 있지만,
아이폰은 그룹정보를 복원시켜주지 않기 때문에, 따로 그룹정보를 복원해야 합니다.
구글 주소록에서는 바로 그룹정보까지 복원되지만, 아이폰에서는 그게 안되네요...





앱이 만들어지고 등록되기까지의 과정 보기



Posted
Filed under 글로 기록하기
애플의 UX/UI는 친절하지가 않습니다.

아이튠즈에서 앱을 구매할려면 신용카드를 등록해야 하는데,
신용카드를 등록하면 신용카드 정보를 확인하기 위해서 가상 결제를 하게 됩니다.
그러면 우리나라에서는 신용카드 결제 문자가 하나 날라오는데,
신용카드를 등록하는 화면에는 계정 테스트를 한다는 설명이 없기 때문에,
실제 결제가 된다고 생각하는 사람들이 많습니다.

그리고, 결제도 매번 유료 앱을 구매할 때마다 오는게 아니라, 여러개를 사면 모아서 결제가 됩니다.


그래서 어떤 앱(유료/무료)을 구매했는지 직접 확인을 해야 합니다.
(하지만 아이튠즈를 사용하지 않으면 구매내역을 확인할 수 없습니다.)


1. 맥/PC 에 설치된 아이튠즈에 로그인을 하고, 계정 정보 화면으로 들어갑니다.

사용자 삽입 이미지


2. 계정 정보 화면에서 구입 내역 버튼을 누릅니다.

사용자 삽입 이미지


3. 구입 내역을 확인합니다.

여러개가 모아져서 보이는데, 빨간색으로 표시한 작은 버튼을 누르면 상세 내역을 확인할 수 있습니다.
구매/업데이트 내역이 다 보입니다.
사용자 삽입 이미지


4. 상세 구입 내역을 확인 할 수 있습니다.

사용자 삽입 이미지