참고 : http://vimeo.com/8718829
혼자 구현해보다가 몇가지 문제를 해결하지 못하고 성질버려서 구굴링한 결과 동영상으로 튜토리얼까지
만든 사이트를 찾았습니다.
위 사이트는 오른쪽, 왼쪽 말풍선 두개를 사용하는데 전 왼쪽용 말풍선을 도저히 구하지 못해서 결국
이미지를 반전시켰습니다.
나중에 사용할 요량으로 우선 저장
//MainViewController.h
//MainViewController.m
혼자 구현해보다가 몇가지 문제를 해결하지 못하고 성질버려서 구굴링한 결과 동영상으로 튜토리얼까지
만든 사이트를 찾았습니다.
위 사이트는 오른쪽, 왼쪽 말풍선 두개를 사용하는데 전 왼쪽용 말풍선을 도저히 구하지 못해서 결국
이미지를 반전시켰습니다.
나중에 사용할 요량으로 우선 저장
//MainViewController.h
@interface MainViewController : UITableViewController { NSMutableArray *arrSms; } @property (nonatomic, retain) NSMutableArray *arrSms; - (void)initResource; @end
//MainViewController.m
#import "MainViewController.h" @implementation MainViewController @synthesize arrSms; #pragma mark- #pragma mark resource - (void)dealloc { [arrSms release]; [super dealloc]; } - (void)initResource { // Custom initialization self.tableView.frame = [[UIScreen mainScreen] applicationFrame]; arrSms = [[NSMutableArray alloc] initWithObjects:@"안녕하세요" , @"네 안녕이요" , @"이건 조금 긴 글 입니다. ^^" , @"이건 더 긴글 입니다. 하하하하 " , @"아이폰도 UI를 이쁘게 만들려면 결국 노가다가 많군요." , @"디자인에 잼병인 저로서는 정말 좌절을 느끼는 중입니다. 이 쉬운 이미지를 찾기 위해서 하루종일 뒤졌어요" , @"결국 반대이미지를 찾지 못해서 결국 프로그램에서 이미지 뒤집는 일까지 있어요 그냥 반대 이미지 사용하면 쉬운데...." , nil]; } #pragma mark- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if ( self ) { [self initResource]; } return self; } - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { [self initResource]; } return self; } - (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. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // self.tableView.backgroundColor = [UIColor colorWithRed:219.0/255.0 green:226.0/255.0 blue:237.0/255.0 alpha:1.0]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; self.arrSms = nil; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [arrSms count]; } #define TAG_IMAGEVIEW 1 #define TAG_LABEL 2 #define TAG_MESSAGE 3 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UIImageView *imageView = nil; UILabel *label = nil; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleNone; imageView = [[UIImageView alloc] init ]; imageView.tag = TAG_IMAGEVIEW; label = [[UILabel alloc] init]; label.tag = TAG_LABEL; label.backgroundColor = [UIColor clearColor]; label.numberOfLines = 0; label.lineBreakMode = UILineBreakModeWordWrap; label.font = [UIFont systemFontOfSize:14.0]; UIView *message = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height) ]; message.tag = TAG_MESSAGE; [message addSubview:imageView]; [message addSubview:label]; message.autoresizingMask = UIViewAutoresizingFlexibleWidth; [cell.contentView addSubview:message]; [imageView release]; [label release]; [message release]; } else { imageView = (UIImageView *)[[cell.contentView viewWithTag:TAG_MESSAGE] viewWithTag:TAG_IMAGEVIEW]; label = (UILabel *)[[cell.contentView viewWithTag:TAG_MESSAGE] viewWithTag:TAG_LABEL]; } // Configure the cell... NSString* text = [arrSms objectAtIndex:indexPath.row]; CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(220.0f, 480.0f) lineBreakMode:UILineBreakModeWordWrap]; UIImage *image = nil; if ( indexPath.row%2 == 0 ) { imageView.frame = CGRectMake(320.0f-(size.width+35.0f), 2.0f, size.width+35.0f, size.height+24.0f); imageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; image = [[UIImage imageNamed:@"Balloon_1@2x.png"] stretchableImageWithLeftCapWidth:28.0f topCapHeight:24.0f]; label.frame = CGRectMake(307.0f-(size.width+5.0f), 10.0f, size.width+8.0f, size.height+5.0f); label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; } else { imageView.frame = CGRectMake(0, 2.0f, size.width+35.0f, size.height+24.0f); imageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; UIImage *tempImage = [UIImage imageNamed:@"Balloon_2@2x.png"]; UIImage *covertImage = [UIImage imageWithCGImage:(CGImageRef)tempImage.CGImage scale:1.0f orientation:UIImageOrientationUpMirrored]; image = [covertImage stretchableImageWithLeftCapWidth:28.0f topCapHeight:24.0f]; label.frame = CGRectMake(25.0f,10.0f, size.width+5.0f, size.height); label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; } imageView.image = image; label.text = text; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString* text = [arrSms objectAtIndex:indexPath.row]; CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(220.0f, 480.0f) lineBreakMode:UILineBreakModeWordWrap]; return size.height+28.0f; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release]; */ } @end
'프로그래밍 > iOS' 카테고리의 다른 글
네이게이션바에 이미지 버튼 올리기 (0) | 2011.10.07 |
---|---|
Stretchable Image를 이용해 App. Size를 줄여보자. (0) | 2011.10.07 |
아이폰에서나인패치드 이미지처럼 사용하는 방법 (0) | 2011.10.07 |
GuruLinks: 아이폰 앱 76개 소스코드, 강좌, 개발 팁 링크모음 (0) | 2011.08.10 |
Mac OS X의 터미널에서 하위 .svn 폴더 모두 삭제하기 (1) | 2011.08.03 |