Category Archives: 허접프로그래머

[iPhone] UITextView에 라운드 테두리 만들기

UITextField에는 RoundedRect라는 둥근 테두리 형태의 스타일을 제공하고 있습니다.

하지만 UITextView에는 아무리 찾아봐도 그런 스타일을 제공하지 않더군요. 하지만 만들어진 앱을 보면 흔하게 볼 수 있습니다.

방법을 찾아보니 저는 단순히 스타일 설정이 있는줄 알았는데 그게 아니라 엄청난 삽질을 통해 완성되는 것이더군요.

[code]- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // UITableView 생성
    CGRect tableViewRect = CGRectMake(10.0f, 30.0f, 300.0f, 170.0f);
    UITableView *tableView = [[UITableView alloc] initWithFrame:tableViewRect style:UITableViewStyleGrouped];
   
    // UITableView 설정
    [tableView setDelegate:self];
    [tableView setDataSource:self];
    [tableView setScrollEnabled:NO];
    [tableView setAutoresizesSubviews:YES];
    [tableView setRowHeight:150.0f];
    [tableView setBackgroundColor:[UIColor whiteColor]];
   
    // 뷰를 붙이기
    [window addSubview:tableView];
    [tableView release];
   
    [window makeKeyAndVisible];
}

#pragma mark – UITableView dataSource Methods
– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // 테이블의 원소는 UITextView 한개뿐이므로 1을 반환하면 된다.
    return 1;
}

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // 재활용을 이용한 셀 생성
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@”TABLEVIEW_IDENTIFIER”];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@”TABLEVIEW_IDENTIFIER”] autorelease];
    }
   
    // UITextView 생성
    CGRect textViewRect = CGRectMake(5.0f, 5.0f, 270.0f, 140.0f);
    UITextView *textView = [[UITextView alloc] initWithFrame:textViewRect];
   
    [textView setFont:[UIFont systemFontOfSize:12.0f]];
    [textView setTextColor:[UIColor blackColor]];
    [textView setBackgroundColor:[UIColor whiteColor]];
    [textView setReturnKeyType:UIReturnKeyDefault];
    [textView setKeyboardType:UIKeyboardTypeDefault];
   
    [cell.contentView addSubview:textView];
    [textView release];
   
    return cell;
}[/code]
1개의 셀을 가진 UITableView를 만든 후에 하나의 셀에 UITextView를 만들어 넣습니다.

이때에 중요한점은 UITableView의 스타일이 UITableViewStyleGrouped인 점입니다. 이것으로 다음과 같은 화면을 볼 수 있습니다.
사용자 삽입 이미지원하시는 모습이 되었나요? 키보드화면이 짤렸지만 정상적으로 여러줄의 글을 작성할 수 있습니다.
1134272022.zip

[iPhone] UITabBarController에 아이콘 이미지 넣기

UITabBarController에 아이콘 이미지를 넣기 전까지는 어떻게 들어갈지 상상하기 힘듭니다.

그리고 보고 나면 왜 다른 어플들의 모습이 다 비슷비슷한지 다시 한번 느끼게 되는 결과를 얻게 됩니다.

[code]- (void)applicationDidFinishLaunching:(UIApplication *)application {
   
    UITabBarController *tabBarController = [[UITabBarController alloc] init];
    UIViewController *leftViewController = [[UIViewController alloc] init];
    UIViewController *rightViewController = [[UIViewController alloc] init];
   
    leftViewController.tabBarItem.title = @”LEFT”;
    rightViewController.tabBarItem.title = @”RIGHT”;
   
    leftViewController.tabBarItem.image = [UIImage imageNamed:@”test_a_01.png”];
    rightViewController.tabBarItem.image = [UIImage imageNamed:@”test_a_01.png”];
   
    NSArray *tabBarItems = [NSArray arrayWithObjects:leftViewController, rightViewController, nil];
   
    [tabBarController setViewControllers:tabBarItems];
   
    [window addSubview:tabBarController.view];
    [tabBarController.view release];
   
    [window makeKeyAndVisible];
}[/code]

위에서 사용하는 이미지는 다음과 같이 단순한 흰색의 이미지입니다. 알아보기 쉽게 하기 위해 배경에 회색을 깔았습니다.
사용자 삽입 이미지위에서 사용한 A 그림은 실제로는 배경이 투명한 이미지입니다. 그렇다면 실제로 완성된 탭바를 보도록 할까요.
사용자 삽입 이미지예상하신대로인가요? UITabBarController에서는 내가 넣은 이미지의 마스크(Mask)만을 사용하는 것을 알 수 있습니다.

선택된 이미지는 광택처리가 된(?) 하늘색 이미지로 바뀌며(자세히 보시면 그림자까지 들어가 있습니다) 비선택된 이미지는 회색으로 처리 되어있습니다.

이제 탭바를 쓴 앱스들의 아이콘이 모두 동일한 이유를 아시겠나요? 실제로 내가 원하는 이미지를 사용할 수 있도록 할수 있는 방법이 있습니다.

drawRect를 재구현 한다거나, 하지만 쉽고 간편하게 이런것을 구현할 수 있다는 점은 그냥 사용하게 만드는 매력을 가지고 있는 것 같습니다.
1108195223.zip