2013-03-16 2 views
1

내 응용 프로그램의 detailview (Scrollview)에서 약 1000 단어의 텍스트를 가져 오는 UILabel이 있습니다. 레이블이 맞도록크기가 조정 된 UILabel이 초기 크기로 스냅

나는 크기를 조정하려면 - 작품 미세 지금까지

-(void) viewDidAppear:(BOOL)animated { 
NSString *message = storycontent.text; 
CGSize maximumLabelSize = CGSizeMake(280,5000); 
CGSize expectedLabelSize = [message sizeWithFont:storycontent.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping]; 
CGRect newFrame = storycontent.frame; 
newFrame.size.height = expectedLabelSize.height; 
storycontent.frame = newFrame; 
} 

때까지 탐색 예상대로 라벨의 크기를 조정할 detailview. 이상한 일 : UILabel을 아래로 스크롤하여 처음 크기로 되돌리려는 순간, 첫 단어 만 보입니다.

어떻게하면 문제를 피할 수 있습니까?

업데이트 : 레이블을 삭제하고 새 레이블을 넣으면 올바르게 작동합니다. 이상한 행동은 글꼴 크기를 17 이외의 다른 것으로 변경하는 순간부터 시작됩니다.

+0

Label을 사용하는 대신 textView를 사용합니다. –

+0

텍스트 뷰로 동일한 동작을 얻습니다. 스크롤을 시작할 때 개체의 초기 높이로 크기 조정 : ( – alexdd55

+0

너는 newFrame 및 storyContent 프레임을 –

답변

0

내 현재 해결 방법 (또는 해결 방법)이 "자동 레이아웃 사용"(Mark Kryzhanouski 사용)을 비활성화하여 스냅 문제를 해결했습니다.

은 자동 레이아웃있는 ScrollView가 자동으로 크기가 조정되지 않습니다를 가지고 있지으로, 그래서 내가

@property (retain, nonatomic) IBOutlet UIScrollView *scroller; 

를 추가하고 이미 위에서 알고있는 내용의 크기를 더한 것입니다 정적 컨텐츠와 그것을 위해 새로운 FRAMESIZE을 계산 항상 표시됩니다.

NSString *message = storycontent.text; 
CGSize maximumLabelSize = CGSizeMake(280,5000); 
CGSize expectedLabelSize = [message sizeWithFont:storycontent.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping]; 

[scroller setContentSize:CGSizeMake(280,expectedLabelSize.height + 400)]; 

어쩌면 할 수있는 방법은 "사용 자동 레이아웃"활성화와 같은 존재!

관련 문제