오늘은 아래와 같은 화면을 XCODE로 만들어 보도록 하겠습니다.
오늘은 탭바는 만들지 않겠습니다.
탭바를 만들었다는 전제 조건하에 위화면을 구성해 보겠습니다.
File > New Project 메뉴를 클릭하면 아래와 같은 화면이 나타 납니다. Window-based Application 타입을 선택한 후 오른쪽 하단의 Choose를 클릭하여 다음 화면으로 넘어 갑니다.
생성할 프로젝트명은 원하시는걸로 입력하세요(ex, bgex)
프로젝트 이름까지 입력하시고 나면 아래와 같은 화면을 접하실 수 있습니다.
(다른 분들은 저와 살짝 다르게 보일 수 있습니다. 단순한 화면 구성의 차이이니 이 프로젝트를 하시는데 큰 문제는 없습니다.)
여기까지는 기본 프로젝트를 만드는 단계이고 이제 이 프로젝트에서 쓰일 이미지 파일들을 Resources 폴더로 넣도록 하겠습니다.
오른쪽의 Finder 에서 원하는 이미지를 선택 한 후 Resources 폴더로 드래그 앤 드롭 합니다. 그러면 창이 하나 뜨는데 copy item into ~ 이부분을 체크 하시고 Add 버튼을 눌러 주세요.
이제 Resources 폴더에 있는 MainWindow.xib 파일을 더블클릭하여 인터페이스 빌더를 열고 Library 창에서 Image View를 선택한 후 Window 창에 끓어다 놓습니다. 가운데 있는 창에서 자모양의 아이콘을 선택하고 가로와 세로의 길이를 위와 같이 지정해 줍니다.
왼쪽 Window 창에서 UIImageView를 선택하시고 오른쪽 상단탭중 젤 왼쪽에 있는 탭을 선택하신 후 image의 오른쪽에 있는 화살표를 눌러 좀전에 넣어둔 이미지 중 menu_bg.png 파일을 선택 합니다.
Background 는 선택을 하신 후 Opacity를 0으로 처리 하시면 됩니다. 지금까지 잘 따라하셨다면 아래와 같은 화면이 나타나고 이제 그 위에 버튼 이미지들을 올려 놓도록 하겠습니다.
Library 창에서 Round Rect Button을 Window 창으로 끌어 놓고 가운데 있는 인스펙터 창에서 Background의 이미지를 menu1.jpg로 선택을 해 줍니다.
위와 같은 방식으로 나머지 두개도 처리를 합니다.
이제 마지막 남은 전체에 백그라운드를 지정하는 화면 입니다. bgexAppdelegate.m 파일을 여신 후 위와 같이 입력을 하시면 됩니다.
소스코드 :
window.backgrondColor = [[UIColor alloc] initWidthPatternImage:[UIImage imageNamed:@”bg.jpg”]];
이제 완료 되었으니 한번 실행해 보시죠. ㅋㅋ 짜잔~!!!
'아이폰 개발 이야기' 카테고리의 다른 글
| 아이폰 개발, 배경이미지를 만들어봅시다! (0) | 2010/08/10 |
|---|---|
| 아이폰 개발, 좌표값과 주소 구하기 (7) | 2010/06/29 |
| 아이폰 개발시 유용한 탭바 커스텀(Custom Tab Bar) 구현하기 (12) | 2010/06/25 |
| [아이폰 컨트롤러 예제] ① 테이블뷰 (0) | 2010/05/27 |
| 아이폰 개발자 등록 방법 A TO Z (22) | 2010/05/24 |
| 아이폰 개발 문자열(NSString) 다루기 예제 (0) | 2010/05/10 |
아이폰 어플중에서 지도에 자기 좌표가 찍히고 주소가 나오는 어플들을 많이들 보셨을 텐데요.
오늘은 좌표값과 주소 구하는 방법에 대해서 알아보겠습니다.
이 기능은 참 많은 어플들을 통해서 활용이 가능할 것 같습니다.
우선 작업목표를 정해보았습니다.
1. 새 프로젝트 (Window-based Application)를 생성한다.
2. 새 프로젝트에 뷰를 하나 추가한다.
3. 추가한 뷰에 검색된 결과를 보여줄 화면(Label,Button등등)을 구성한다.
3. 현재 좌표값을 구한다.
4. 구해진 좌표값을 화면에 뿌린다.
5. 구해진 좌표값에 해당하는 주소를 구글맵에서 받아온다.
6. 받아온 결과를 화면에 뿌려준다.
막상 써 놓으니 음... 생각보단 간단하네요~!!
자~~ 이제 목표는 정해졌으니 하나씩 해보면 됩니다.ㅋ
이제 작업목표에서 정한 순서로 진행과정을 살펴보겠습니다..
시작해 볼까요~
XCode에서 File->New Project->Window-based Application을 클릭하세요.
(아시는 분들도 많겠지만 혹시 모르는 분도 있을까 해서 아래 이미지 참조)
2. 새 프로젝트를 윈도우 베이스로 만들었지만 뭔가 보여줄 화면이 필요합니다.
화면용 파일을 하나 프로젝트에 추가합니다.
XCode화면의 Groups&Files 영역에서 마우스 오른쪽 클릭해서 Add->New File을 합니다.
3. 이제 화면도 만들었습니다.
Command+R 키로 그냥 한번 실행해봅니다. 아무것도 없습니다..
화면에 뭔가 만들어주어야 합니다. 다른 것을 사용해도 되겠지만 이번 작업에서는 단순하게 Label로 모두 처리하도록 합니다.
아래화면 참고해서 같이 만들어보죠.
참고로 화면에 구성된 Label들은 소스파일의 IBOutlet로 선언된 변수들과 연결해주어야 합니다.
4. Label과 아웃렛과의 연결 하셨다면 이제 좌표값을 구해보겠습니다.
좌표값을 구하기 위해서는 CoreLocation.framework을 현재 프로젝트에 추가해주어야 합니다.
추가했나요? 이젠 좌표구하는 부분 소스를 보겠습니다.
/*
viewDidLoad 이벤트에 CLLocationManager를 생성해서 실행줍니다.
그러면 #pragma mark - 이하 부분이 자동적으로 실행됩니다.
핵심 소스가 여기입니다.
*/
- (void)viewDidLoad {
self.locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
#pragma mark -
#pragma mark CLLocationManagerDelegate Methods
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if (startingPoint == nil)
self.startingPoint = newLocation;
NSString *latitudeString = [[NSString alloc] initWithFormat:@"위도 : %g°", newLocation.coordinate.latitude];
latitudeLabel.text = latitudeString;
[latitudeString release];
NSString *longitudeString = [[NSString alloc] initWithFormat:@"경도 : %g°", newLocation.coordinate.longitude];
longitudeLabel.text = longitudeString;
[longitudeString release];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSString *errorType = (error.code == kCLErrorDenied) ? @"Access Denied" : @"Unknown Error";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error gettingg location from Core Location" message:errorType delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert show];
[alert release];
}
==============================================================================================
5. 좌표값을 받아서 구글맵에서 주소를 조회하는 부분을 보겠습니다.
1) 구글맵에 주소 조회 쿼리를 보내서 결과(XML)를 받아오는 기능을 구현합니다.
2) 받아온 결과(XML)을 파싱하는 기능을 구현합니다.
위에 1), 2)는 유기적으로 함께 구동됩니다.
==================구글맵에 주소 조회 쿼리 보내기=========================
-(IBAction)loadXMLData{
self.xmlUrl = @"http://maps.google.com/maps/api/geocode/xml?latlng=37.630478,127.090199&language=kr&sensor=true";
xmlConnection = [[NSURLConnection alloc]
initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:xmlUrl]]
delegate:self];
if (xmlConnection == nil)
NSLog(@"Connect error");
else
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
xmlParseData = [[NSMutableArray alloc] init];
xmlValue = [[NSMutableString alloc] init];
currectItem = [[NSMutableDictionary alloc] init];
receiveData = [[NSMutableData alloc] init];
}
#pragma mark URLConnection delegate methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Receive: %@, %@, %d",
[response URL],
[response MIMEType],
[response expectedContentLength]);
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"%@", [error localizedDescription]);
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
//NSString *str = [[NSString alloc] initWithData:data encoding:0x80000000 + kCFStringEncodingDOSKorean];
//NSData *data1 = [str dataUsingEncoding:NSUTF8StringEncoding];
[receiveData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//NSString *str = [[NSString alloc] initWithData:receiveData encoding:0x80000000 + kCFStringEncodingDOSKorean];
//NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
//NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:receiveData];
[parser setDelegate:self];
[parser parse];
[parser release];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
[xmlConnection release];
[receiveData release];
}
================================조회 결과 XML을 파싱하여 화면에 보여주기================================
#pragma mark XMLParse delegate methods
//#pragma mark NSXMLParser delegate methods
- (void)parserDidEndDocument:(NSXMLParser *)parser {
self.clickBtn;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@"address_component"])
elementType = etItem;
[xmlValue setString:@""];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if (elementType != etItem)
return;
if ([elementName isEqualToString:@"long_name"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"short_name"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"address_component"]) {
[xmlParseData addObject:[NSDictionary dictionaryWithDictionary:currectItem]];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (elementType == etItem) {
[xmlValue appendString:string];
}
}
좀 부족했지만 위 설명을 잘 수행한다면 다음과 같은 화면이 나오게 됩니다...(제가 사는곳입니다. ㅎㅎㅎ)
부족한 부분은 첨부된 소스 보면 이해가 될겁니다. 파일첨부합니다~!! 화이팅하세요~
'아이폰 개발 이야기' 카테고리의 다른 글
| 아이폰 개발, 배경이미지를 만들어봅시다! (0) | 2010/08/10 |
|---|---|
| 아이폰 개발, 좌표값과 주소 구하기 (7) | 2010/06/29 |
| 아이폰 개발시 유용한 탭바 커스텀(Custom Tab Bar) 구현하기 (12) | 2010/06/25 |
| [아이폰 컨트롤러 예제] ① 테이블뷰 (0) | 2010/05/27 |
| 아이폰 개발자 등록 방법 A TO Z (22) | 2010/05/24 |
| 아이폰 개발 문자열(NSString) 다루기 예제 (0) | 2010/05/10 |
안녕하세요. 이제부터 아이폰 어플에 쓰이는 컨트롤러들을 한개씩 간단한 예제와 함께 설명하려 합니다.
그 첫번째 테이블 뷰 입니다.
아마 컨트롤러 중에서 방대하게 쓰이는 게 이 테이블 뷰가 아닐까 생각되네요 ^^
테이블뷰 사용 예제는 4가지로 나눠서 포스팅할게요
2. 네비컨트롤러를 이용한 테이블뷰 예제
3. XML를 이용한 테이블 뷰 예제
4. 테이블 뷰에 셀 디자인 예제
오늘은 그 첫번째 간단한 테이블 뷰 예제 입니다.
새 프로젝트 선택하고 TableTest 라는 이름으로 프로젝트 생성해주세요. 프로젝트 생성해 주실때는 네모칸 친 view_based Application 으로 선택해주세요.
이제 테이블 뷰를 IB에서 집어넣을게요 TableTestViewController.xlb 를 열어주세요.
그림처럼 테이블 뷰를 View 창에 끌어다 넣으세요~ 그럼 화면과 같이 꽉 차게 들어가면 됩니다.
집어넣은 테이블 뷰 선택한 상태에서 네모칸 친곳을 보면 dataSource 와 delegate 가 보일꺼예요
그걸 File;s Owner로 연결해 주세요. 이렇게 함으로 어플이 실행될때 이 테이블 뷰 컨트롤러를 델리게이트로 인식해서 AppDelegate에서 별다른 코드를 넣지 않아도 테이블 뷰를 먼저 띄우게 됩니다.
이제 소스 작업을 하겠습니다.
TableTestViewController.h 를 열어주시고 아래와 같이 코드를 써주세요
#import <UIKit/UIKit.h>
@interface TableTestViewController : UIViewController <UITableViewDelegate , UITableViewDataSource>{
NSArray *listData; //테이블뷰에 들어갈 테이타를 저장 할 배열 변수 선언
}
@property (nonatomic, retain) NSArray *listData;
@end
TableTestViewController.m 를 열어주시고 아래와 같이 코드를 써주세요
#import "TableTestViewController.h"
@implementation TableTestViewController
@synthesize listData; //앞에서 선언한거 synthesize 해주고요
//처음 동작할때 로드되는 부분입니다. 저희는 배열에 데이타를 넣는 작업을 했습니다.
- (void)viewDidLoad {
NSArray *array = [[NSArray alloc] initWithObjects:@"AAAA",@"BBBBB",@"CCCCCC",@"DDDDDD",nil];
self.listData = array;
[array release]; //선언된 변수 초기화
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.listData = nil;
}
//여기가 본격적인 테이블뷰 코딩 작업입니다.
#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1; //테이블 그룹갯수를 리턴합니다. 저희는 테이블이 따로 그룹이 필요없고 한개만 될 것이기 때문에 1 적어주시고
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.listData count]; //데이타 갯수를 리턴합니다. 배열의 갯수를 리턴합니다.
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// 셀 스타일을 정하는 구간입니다. 빨간색 부분을 UITableViewCellStyleValue1 / UITableViewCellStyleValue2 / UITableViewCellStyleSubtitle / UITableViewCellStyleDefault 이렇게 4가지 방식으로 바까보세요 셀 형식이 바뀌는걸 보실수 있으실 겁니다
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:row]; //로우 indexPath와 배열 index와 매칭시켜서 값을 집어넣어요
cell.detailTextLabel.text = @"서브텍스트"; //서브텍스트라벨에 글자를 집어넣습니다.
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //테이블 뷰 옆에 [>] 이런 화살표 이미지가 이 옵션으로 생깁니다. 필요 없으신 분은 삭제 하셔도 무방하세요~
return cell;
}
- (void)dealloc {
[listData release];
[super dealloc];
}
@end
자 그럼 결과를 실행해볼게요 위에 코드 설명에 보면 빨간색으로 표시된 UITableViewCellStyleSubtitle 부분 보이죠
이부분이 셀 스타일을 지정해 주는 것으로
UITableViewCellStyleValue1 / UITableViewCellStyleValue2 / UITableViewCellStyleSubtitle / UITableViewCellStyleDefault
이 4개중 여러개로 바꿔보시면서 컴파일 해보세요
아래는 스타일에 따른 컴파일 화면입니다.
① UITableViewCellStyleDefault 일 경우
② UITableViewCellStyleValue1 일 경우
③ UITableViewCellStyleValue2 일 경우
'아이폰 개발 이야기' 카테고리의 다른 글
| 아이폰 개발, 좌표값과 주소 구하기 (7) | 2010/06/29 |
|---|---|
| 아이폰 개발시 유용한 탭바 커스텀(Custom Tab Bar) 구현하기 (12) | 2010/06/25 |
| [아이폰 컨트롤러 예제] ① 테이블뷰 (0) | 2010/05/27 |
| 아이폰 개발자 등록 방법 A TO Z (22) | 2010/05/24 |
| 아이폰 개발 문자열(NSString) 다루기 예제 (0) | 2010/05/10 |
| 아이폰 개발하려면 일단 요것부터-2편 (Hellow World) (2) | 2010/05/03 |
결제만 한글로 되어있고 신청은 영어로 해야되서 그런지 사람들이 좀 어려워 하는 것 같아서 캡쳐를 해보았습니다.
많은 도움이 되었으면 좋겠네요. (참고로 web2log라는 회사 명의로 개발자 등록을 했습니다.)
http://developer.apple.com/iphone/index.action 페이지에 들어갑니다. 이제 시작이죠 후훗
아이디를 가지고 계신분들은 로그인을 하시면 됩니다. 저는 새로 아이디를 만들었습니다.
상단 부분은 아이폰 개발 프로그램, 아래부분은 맥 개발자 프로그램입니다.
우선 상단에 첫번째는 개인개발자입니다. 두번째 체크한 부분은 회사로 등록하는 거구요.
세번째는 500명 이상의 직원을 가진 회사가 사내에서만 쓸 수 있는 어플리케이션을 등록하는 엔터프라이즈 계정입니다.
마지막은 대학에서 아이폰개발을 교육용으로 쓰기위해서 받는 무료 프로그램입니다.
일년에 99달러(결과적으로 104,000원)를 내면 된다는군요 , 파란색 등록버튼을 눌러줍니다.
간략하게 개발 프로세스를 설명해주고 있네요 , 컨티뉴~~!!고고
기존 개발자인지 새로운 개발자인지를 물어보는군요.
저는 새롭게 개발자 등록을 하는 것 중에서 계정도 새로만든다고 체크했습니다.
개인으로 가입할 것인지 회사이름으로 가입을 할 것인지를 묻는 창입니다. 회사로 가입하였습니다.
아이디와 비밀번호 생년월일, 그리고 이름, 이메일 국가, 지역 등의 개인정보까지 입력해줍니다.
첫질문으로 어떤 플랫폼을 개발할 것인지를 묻습니다.
아이폰 운영체제, 맥OS X 등을 체크하고 원하는 시장과 유료/무료 어플리케이션을 개발할 것인지,
개발은 얼마나 경력이 있는지 , 다른 모바일 플랫폼에서도 개발을 할 계획인지 등을 체크해줍니다.
약관을 술술술 대충 읽고나서 체크박스 체크한 뒤 동의 버튼을 누릅니다.
아까 적은 이메일로 숫자가 여섯자린가 일곱자리가 옵니다. 메일로 받은 숫자를 입력하고 컨티뉴~~고고
회사 정보들을 입력해 줍니다.
회사 정보를 입력하시면 되겠습니다. 법적으로 책임질 수 있는 확실한 정보를 입력하라네요.
입력하신 정보를 확인하고 맞으면 컨티뉴 ~~고고
입력이 일차적으로 끝났습니다. 여기까지 하셨으면 그다음 메일을 기다리셔야 합니다.
요 메일은 바로 옵니다.
접수된 아이디(Enrollment ID)가 메일로 옵니다. 음.. 이건 다음 메일이 왔을때 필요합니다.
네 이게 팩스번호입니다. 팩스에다가 회사 영문 사업자 등록증을 팩스로 넣는데
팩스로 넣을때 거기에다가 등록된 ID(Enrollment ID)를 함께 적어서 팩스로 보내셔야 합니다.
그리고 약 2주간 기다립니다.
.......
기다려도 기다려도 오지 않는 답장메일..
그래서 다시 스캔을 해서 메일로 보냈습니다.
잘 받았다고 답변이 왔습니다. 가운데 링크를 통해서 이제 구매를 하면 끝입니다.
메일에 링크를 타고 들어와서 개발 프로그램 라이센스를 읽고 동의한뒤 버튼을 꾸욱 누르면,
애플 온라인 스토어에서 주문하시고 등록 활성화 메일을 24시간안에 보내준다고 하는 문구입니다.
24시간안에 활성화 메일이 오지 않으면 연락달라는군요.
요기서부터는 익숙한 한글창입니다. 결제하기 버튼을 누릅니다.
다시한번 주소가 정확한지 적어줍니다.
자 드디어 끝났습니다 ^^;
ㅋㅋㅋ 아 막상 해보면 별거 아닌데 , 기다리고 기다리는 시간들이 너무 지루한것 같습니다.
밉습니다. 애플 ㅠㅠ
'아이폰 개발 이야기' 카테고리의 다른 글
| 아이폰 개발시 유용한 탭바 커스텀(Custom Tab Bar) 구현하기 (12) | 2010/06/25 |
|---|---|
| [아이폰 컨트롤러 예제] ① 테이블뷰 (0) | 2010/05/27 |
| 아이폰 개발자 등록 방법 A TO Z (22) | 2010/05/24 |
| 아이폰 개발 문자열(NSString) 다루기 예제 (0) | 2010/05/10 |
| 아이폰 개발하려면 일단 요것부터-2편 (Hellow World) (2) | 2010/05/03 |
| 아이폰 하단 navigationController의 Toolbar에 이미지 버튼 넣는 방법 (0) | 2010/04/27 |
아이패드가 해외에서도 출시되기 시작했습니다. 굴욕적이지만 그 판매국에 한국이 빠져있었습니다. ;; 원투펀치 먹고 한 방 더 먹었네요.
애플이 다음으로 시도할 분야가 TV라는 것은 잘 아실 겁니다. 어제 뉴스 기사를 보니 아이패드로 TV를 컨트롤하는 앱스들이 큰 호평을 받고 있다는데요,
http://www.yonhapnews.co.kr/bulletin/2010/05/13/0200000000AKR20100513042200017.HTML?did=1179m
실패로 끝났던 애플의 첫 번째 TV 시도와 현재는 상황과 환경이 완전히 다르다는 점에서 지금 상황을 잘 분석해 볼 필요가 있습니다. 지금 TV로 진출하는 애플은 막강한 컨텐츠 기반과 인프라를 가지고 있습니다. 이 애플TV는 기존 TV개념으로는 접근할 수 없는 새로운 녀석입니다. 애플TV를 가지고 있는 사람은 아이패드 앱스로 아무데서나 TV를 볼 수 있게 되겠죠. 애플TV는 어플리케이션과 게임컨텐츠, 전자책과 뉴스 기반으로 되어있는 아이폰과 아이패드를 TV라는 컨텐츠 영역으로 확장시킬 것입니다. 이 플랫폼으로 기존 컨텐츠 사업자들은 유입될 것이고 새로운 방송 사업자들이 생산될 수도 있습니다. 새로운 시장이 또 창출되면서 말 그대로 유비쿼터스 시대가 열리게 됩니다.
이러한 상황은 세계 TV시장의 선두격인 LG와 삼성에게 가장 큰 타격을 줄 수 있습니다. LG나 삼성은 말 그대로 TV만 만드는 회사니까요. 국내 회사는 부속품을 제공하는 하청업체로 전락해 버릴 수도 있는 것입니다.(아이폰 부속의 상당수가 국내 제품이라죠?)
애플이 진출할 그 다음 방향에 대해서 생각해 보았습니다. 범위를 단순히 단말기류로만 생각할 것이 아니라 좀 더 다른 산업의 컴퓨터 시스템과 통합하기 시작한다면 어떨까요? 예를 들어 애플이 자동차 시장에 진출한다면 어떻게 될까요? 그것도 단순한 자동차가 아니라 차세대 전기자동차를 만들어 팔기 시작한다면요?
애플의 장점은 디자인이고 사용자 쾌감입니다. UX(User eXperience)에서 이들을 따라가기가 어렵습니다. 애플의 전기 자동차가 애플의 소프트웨어 네트워크와 컨텐츠를 뒤집어 쓰고 애플 디자인 컨셉과 애플 기기에서 느끼는 UX가 적용된 차(핸들도 없을지도 모르죠)를 만들어 내다 팔면 어떤 사람들은 정말 안사고는 못 배길 것 같습니다. 어쩌면 자동차의 개념과 사용방식까지도 바꿔버릴 자동차가 나올지도 모릅니다. 단기간에 세계적으로 50만대 정도만 나가도 애플 주가는 미국 최고가 될 수도 있겠네요.
애플이 집을 짓는다면요? 이들은 뭔가 자동차, 건설과 같은 분야로 적용되는 유비쿼터스, 컨버전스 시대에 맞는 새로운 디자인과 사용자 경험을 제공해 줄 수 있을 것 같습니다.
'뉴미디어 뉴스' 카테고리의 다른 글
| 이번 6.2 지방 선거는 트위터 선거였다 (4) | 2010/06/03 |
|---|---|
| 한국의 브라우저 환경, 아직 멀었다. (21) | 2010/05/18 |
| 애플이 집을 짓는다구?? (0) | 2010/05/14 |
| 100만대 판매 돌파로 다시 생각해 본 아이패드 (3) | 2010/05/04 |
| 모건 스탠리 인터넷 트렌드 자료 공유합니다. (4) | 2010/04/30 |
| 애플에 선전포고한 대한민국 (6) | 2010/04/28 |
오늘의 포스팅은 문자열(NSString) 다루기 예제입니다.
코코아에서는 문자열을 선언할 시 NSString 클래스를 사용합니다.
기본적으로 문자열을 대입 할 시에는 @ 를 꼭 붙여준다음 문자를 써줘야 합니다.
아래 예제를 보시면 이해가 가실거예요
// 빈 문자열 생성하기
NSString *str1 = [NSString new];
//일반적인 문자열 대입 - 문자열 상수
str1 = @"web2log.com";
//포멧 문자열(stringWithFormat) - 변수 대입방식
NSString *str2 = [NSString stringWithFormat:@"Hi, %@",str1];
//포멧 문자열(stringWithFormat) - 숫자 대입방식
NSString *str3 = [NSString stringWithFormat:@"Integer, %d",123456];
//포멧 문자열(stringWithFormat) - 문자열 대입방식
NSString *str4 = [NSString stringWithFormat:@"stringWithFormat, %s","web2log.com"];
//Object-C형식 문자열
NSString *str5 = [NSString stringWithString:@"web2log.com"];
//C형식 문자열
NSString *str6 = [NSString stringWithCString:"web2log.com"];
//문자열 Append (추가)
NSString *str7 = [str6 stringByAppendingString:@":web2log.com"];
//문자열 길이 구하기
int len = [str7 length];
//String형을 int형으로 형변환하기
int vInt = [@"1234" intValue];
//String형을 float형으로 형변환하기
float vFloat = [@"1234.56" floatValue];
//메모리 할당한 문자열 변수 제거
[str1 release];
그리고 위에 예제코드를 바탕으로 간단한 샘플앱을 만들었는데요,
파일 첨부합니당~!
샘플 앱의 결과 화면을 볼까요
'아이폰 개발 이야기' 카테고리의 다른 글
| [아이폰 컨트롤러 예제] ① 테이블뷰 (0) | 2010/05/27 |
|---|---|
| 아이폰 개발자 등록 방법 A TO Z (22) | 2010/05/24 |
| 아이폰 개발 문자열(NSString) 다루기 예제 (0) | 2010/05/10 |
| 아이폰 개발하려면 일단 요것부터-2편 (Hellow World) (2) | 2010/05/03 |
| 아이폰 하단 navigationController의 Toolbar에 이미지 버튼 넣는 방법 (0) | 2010/04/27 |
| 아이폰 개발하려면 일단 요것부터-1편 (13) | 2010/04/27 |
pt :points(포인트) - 1포인트는 0.72인치
px :pixels(픽셀) - 화면 해상도에 대한 상대크기
% : 퍼센티지 - 지정되거나 상속받은 (또는 상위 엘리먼트)에 대한 백분율 상대 크기
말로하면 복잡하죠?
아래 표를보면 한눈에 쫙~들어올겁니다.
| Pixels | EMs | Percent | Points |
|---|---|---|---|
| 6px | 0.375em | 37.5% | 5pt |
| 7px | 0.438em | 43.8% | 5pt |
| 8px | 0.5em | 50% | 6pt |
| 9px | 0.563em | 56.3% | 7pt |
| 10px | 0.625em | 62.5% | 8pt |
| 11px | 0.688em | 68.8% | 8pt |
| 12px | 0.75em | 75% | 9pt |
| 13px | 0.813em | 81.3% | 10pt |
| 14px | 0.875em | 87.5% | 11pt |
| 15px | 0.938em | 93.8% | 11pt |
| 16px | 1em | 100% | 12pt |
| 17px | 1.063em | 106.3% | 13pt |
| 18px | 1.125em | 112.5% | 14pt |
| 19px | 1.188em | 118.8% | 14pt |
| 20px | 1.25em | 125% | 15pt |
| 21px | 1.313em | 131.3% | 16pt |
| 22px | 1.375em | 137.5% | 17pt |
| 23px | 1.438em | 143.8% | 17pt |
| 24px | 1.5em | 150% | 18pt |
1em은 16px 이고, 우리가 많이 쓰는 12px은 0.75em 이되죠.
부모 요소에 적용한 스타일이 자식 요소에 계속되는 것을 상속(inherit)라고 합니다. 상속된 값이 "%"나 "em" 등의 상대단위인 때는 일반적으로 부모 요소의 값에 자식 요소의 값을 더한 값이 적용됩니다.
body { font-size:62.5%; color:green;}
div { font-size:2em; }
p { font-size:1.5em; border : 1px solid red ; padding: 1em;}
</style>
<body>
<p>body의 62.5%의 폰트사이에서 p의 1.5em만큼 커진 폰트 사이즈입니다. </p>
<div>
<p>div의 2em사이즈를 한번 더 상속받은 이곳은 폰트가 위의 p태그보다 큽니다.</p>
</div>
</body>
em사이즈를 사용할땐 상속받는 값을 생각하며 계산을 해야해서 쬐끔 복잡하다는 느낌이 들기도 합니다.
다음은 폰트 크기 계산을 도와주는 웹 사이트에요.
- em 단위 계산기: http://riddle.pl/emacalc
'웹표준 개발' 카테고리의 다른 글
| CSS 선택자(selector)에 대해서 정리해봅니다. 2 (0) | 2010/05/31 |
|---|---|
| CSS 선택자(selector)에 대해서 정리해봅니다. 1 (2) | 2010/05/20 |
| [웹표준 코딩]CSS 폰트 단위를 알아봅시다 (2) | 2010/05/06 |
| 웹페이지에 옷을 입히는 스타일시트 연결 (1) | 2010/04/26 |
| html과 xhtml의 차이점 (0) | 2010/04/19 |
| DTD선언이란? (0) | 2010/04/12 |
아이패드가 28일만에 100만대를 돌파했습니다.
아이폰이 74일 걸렸다는데 절반도 안되는 시간 내에 판매된 것입니다.
아이패드는 출시 발표 때부터 지금까지도 그 사용 용도, 즉 핵심 타겟층에 대해 설왕설래가 많았습니다. 기능 면에서 네 개 붙여 놓은 아이폰인데 전화기능이 안되는 거라는 비아냥도 있었고, 핵심 타겟이 아이와 노인이라는 말도 있고, 교육 및 사무기기로 교사나 오피서들에게 대히트를 칠거라는 전망도 있었습니다.
어차피 노인이 쓸지 프리젠테이셔너가 쓸지는 단기간 확인될 문제는 아니겠지만요, 컴퓨터 사용층의 몇 가지 사용례 구분을 통해서 조심스레 아이패드를 다시 생각해 볼까합니다.
나름대로 그려본 그림입니다.(절대 엄밀하지 않습니다;;)
아이패드가 영역을 더 넓힐 수도 있지만 입력장치의 한계로 현재는 Office work의 부분(design 등)과 게임의 부분(MMORPG류)이 빠진 정도라고 보입니다. 넷북과 노트북보다 영역이 작지만 그리 큰 차이가 없다는 게 흥미롭습니다.
아이폰의 주요 용도가 음성 통신 외에 3, 4 ,5에 있다는 것을 상기해 보면 아이패드는 넷북이나 노트북 보다 확실한 강점이 있습니다. 넷북을 보면 트위터가 안떠올라도 아이폰이나 아이패드를 보면 트위터가 떠오릅니다. 꾸준히 개발되는 관련 어플리케이션을 보더라도 알 수 있죠. 음성 전화 빈도와 시간 보다 트윗과 페이스북, SMS를 더 많이 할 10~20대 입장에서 보면 과장해서 이건 겨우 '전화 기능'하나 빼고 훨씬 커진 화면에서 SNS하는 단말기라고도 말할 수도 있겠습니다. 커뮤니케이션의 방법과 성격이 변화하고 있으니까요.
커뮤니케이션의 영역 외에 다른 부분의 활용도를 어플리케이션을 통해 사용자가 개척해 나갈 상황도 재미있습니다. 2004년 같이 일했던 한 프로그래머가 당시 HP의 타블렛 PC를 근 250만원을 주고 구입했던 적이 있었죠. 수많았던 오류도 오류지만 이 타블렛 PC는 그냥 노트북이었습니다. '써지는 판'이 추가된 노트북이었죠. 그런데 아이패드는 여기에 덧붙여지는 응용 프로그램들에 의해 그 기기의 용도가 변화무쌍해집니다. 위의 다섯가지 범주 외의 영역을 사용자(개발사)의 필요와 상상력으로 개척해 나갑니다. 이것이 노트북/넷북과의 명확한 차이점이라고 할 수 있으며 개발 인프라면에서 곧이어 쏟아져 나올 유사 기기들에 비해 애플이 가진 극명한 우위라고 할 수 있습니다.
'뉴미디어 뉴스' 카테고리의 다른 글
| 한국의 브라우저 환경, 아직 멀었다. (21) | 2010/05/18 |
|---|---|
| 애플이 집을 짓는다구?? (0) | 2010/05/14 |
| 100만대 판매 돌파로 다시 생각해 본 아이패드 (3) | 2010/05/04 |
| 모건 스탠리 인터넷 트렌드 자료 공유합니다. (4) | 2010/04/30 |
| 애플에 선전포고한 대한민국 (6) | 2010/04/28 |
| KT와 삼성 분쟁, 향후 구도는 (4) | 2010/04/27 |
|
Tracked from IT도 트레이닝이 필요하다! | 2010/05/04 16:50 | DEL
[애플社(Apple)의 아이패드(iPad)가 28일만에 밀리언셀러를 달성했다고 합니다. 아이폰(iPhone)이 100만대가 되기까지는 74일이 걸렸습니다. 그 날짜의 절반도 안되는 빠른 속도로 밀리언셀러가 되다니 정말 스티븐 잡스의 한계는 어디까지 인가요.] 애플의 아이패드, 밀리언셀러 달성! Chitika Labs 사이트의 iPad Stats. 190만대가 넘었다. Chitika Labs 사이트의 iPad Stats에서 캡쳐해 온 스크린샷 입니다... |
저번 아이폰 개발하기 전 준비과정을 담은 포스팅 “아이폰-개발-시작-기초과정-1”에




FindArea.zip