2012-11-02 4 views
0

난 대물-C에 새로 온 .. I가 UILabels의 .I 동적 크기 (widthheight)를 설정할 계세요하지만에 텍스트와 UILabel이 텍스트는 그것이에 맞는 doesnot 경우 올바르게 표시해야 큰 그 다른 라인으로가는 한 줄 및 데이터가 완료되면 다음 UILabels 데이터 만 시작하고 다음에 대한 동일한 개념을 시작합니다 UILabel. 어떻게해야합니까? 이 많은 도움 월에 이어동적 크기를 xcode의 UILabels로 설정 하시겠습니까?

+0

내 대답은 http://stackoverflow.com/a/12600584/1538079 –

+0

가능한 중복 여기에 주어진 체크 레이블 프레임과 backview을 설정합니다 [동적으로 UILabel 높이를 계산하는 방법?] (http://stackoverflow.com/questions/7174007/how-to-calculate-uilabel-height-dynamically) –

답변

1

viewcontroller.m 파일의 코드

#import "ViewController.h" 
#import <QuartzCore/QuartzCore.h> 

#define FONT_SIZE 14.0f 
#define CELL_CONTENT_WIDTH 320.0f 
#define CELL_CONTENT_MARGIN 10.0f 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

items = [[NSMutableArray alloc] init]; 
[items addObject:@"Happiness is having a large, loving, caring, close-knit family in another city.\n\n\t\t-George Burns (1896 - 1996)"]; 
[items addObject:@"When I am abroad, I always make it a rule never to criticize or attack the government of my own country. I make up for lost time when I come home.\n\n\t\t-Sir Winston Churchill (1874 - 1965)"]; 
[items addObject:@"After two years in Washington, I often long for the realism and sincerity of Hollywood.\n\n\t\t-Fred Thompson, Speech before the Commonwealth Club of California"]; 
[items addObject:@"It is a profitable thing, if one is wise, to seem foolish.\n\n\t\t-Aeschylus (525 BC - 456 BC)"]; 
[items addObject:@"Bill Gates is a very rich man today... and do you want to know why? The answer is one word: versions.\n\n\t\t-Dave Barry"]; 
[items addObject:@"At the worst, a house unkept cannot be so distressing as a life unlived.\n\n\t\t-Dame Rose Macaulay (1881 - 1958)"]; 
[items addObject:@"It is curious that physical courage should be so common in the world and moral courage so rare.\n\n\t\t-Mark Twain (1835 - 1910)"]; 
[items addObject:@"The knowledge of the world is only to be acquired in the world, and not in a closet.\n\n\t\t-Lord Chesterfield (1694 - 1773), Letters to His Son, 1746, published 1774"]; 
[items addObject:@"What lies behind us and what lies before us are tiny matters compared to what lies within us.\n\n\t\t-Ralph Waldo Emerson (1803 - 1882), (attributed)"]; 
} 

#pragma mark - 
#pragma mark UITableView Delegaates 

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [items count]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 
{ 
return 1; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
NSString *text = [items objectAtIndex:[indexPath row]]; 
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 
CGSize size = [text 1="systemFontOfSize:FONT_SIZE" language="sizeWithFont:[UIFont"][/text] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping]; 
CGFloat height = MAX(size.height, 44.0f); 
return height + (CELL_CONTENT_MARGIN * 2); 
} 

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UITableViewCell *cell; 
UILabel *label = nil; 

cell = [tv dequeueReusableCellWithIdentifier:@"Cell"]; 
if (cell == nil) 
{ 

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] ; 
label = [[UILabel alloc] initWithFrame:CGRectZero]; 
[label setLineBreakMode:NSLineBreakByWordWrapping]; 
[label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
[label setNumberOfLines:0]; 
[label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
[label setTag:1]; 
[[cell contentView] addSubview:label]; 
} 
NSString *text = [items objectAtIndex:[indexPath row]]; 

CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 

CGSize size = [text 1="systemFontOfSize:FONT_SIZE" language="sizeWithFont:[UIFont"][/text] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping]; 

if (!label) 
label = (UILabel*)[cell viewWithTag:1]; 

[label setText:text]; 
[label setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))]; 

return cell; 
} 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
[dataTableView deselectRowAtIndexPath:[dataTableView indexPathForSelectedRow] animated:YES]; 
} 
@end 

Also Download Source code from here.

다음은 viewcontroller.h 파일

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController{ 
IBOutlet UITableView *dataTableView; 
NSMutableArray *items; 
} 

@end 

에 대한 코드입니다. 여기 링크는 "TEXTSIZE"를 사용

관련 문제