2011-09-16 3 views
1

다음 텍스트를 표시하는 데 필요한 라벨 높이를 얻으려면 다음 방법을 사용하고 있습니다.iPhone 4.0에서 시뮬레이터와 비교하여 표시되는 라벨 높이의 차이

//Obtain the label height required for the text 
CGFloat answerLabelHeight = [CustomCell getHeightOfLabel:answer_text ofFontSize:ANSWER_FONT_SIZE withConstraint: ANSWER_CONSTRAINT]; 

//Retrieve the label from cell contentview 
UILabel *thisAnswerLabel = (UILabel*)[self.contentView viewWithTag:ANSWERLABEL_TAG]; 

//Set the frame of the label depending on the label height obtained above 
[thisAnswerLabel setFrame:CGRectMake(CELL_TEXT_LEFT_MARGIN + CELL_AVATAR_WIDTH + CELL_SPACING, currentYAxisValue, CELL_ANSWER_WIDTH, answerLabelHeight)]; 


//Method to obtain label height 
+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint 
{ 
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 

    return size.height; 
} 

이상하게도, 반환되는 라벨 높이가 정확하지 않은 경우가 있습니다. 즉 텍스트 위아래에 여전히 공백이 있습니다 (아래 참조). 또한, 결과는 아이폰 4 기기에 대해 반환 및 시뮬레이터는 시뮬레이터에 다른

결과입니다 : (결과는 아이폰에 텍스트

enter image description here

결과 위와 아래에 별도의 패딩, 즉 정확 4 : (결과는 다른 약간

enter image description here

즉 여분의 패딩 위에서 볼 수 있습니다 떨어져 텍스트 아래3210

누구나 에 대한 조언을 해주실 수 있습니다. 1) iphone 기기와 시뮬레이터간에 결과가 다른 이유는 무엇입니까? 2) iPhone 4 시나리오에서 여분의 패딩을 제거하려면 어떻게해야합니까?

편집 : 단락의 마지막 단어가 테두리의 오른쪽에 가까운 경우처럼 특정 시나리오에서만 추가 패딩이 발생합니다. 그렇지 않으면 반환 된 높이가 괜찮습니다. 이것이 아이폰의 망막 디스플레이 때문이라면 어떻게이 불일치를 극복 할 수 있습니까?

답변

1

@ Zhen 아이폰 4가 ratina 디스플레이를 가지고있는 동안 당신은 ratina disply을 위해 시뮬레이터를 사용하지 않는 것 같아요.

높이를 줄이고 가운데 맞춤을 설정하여 여분의 패딩을 제거 할 수 있습니다.

+0

재미있는 점은 어떤 경우에는 괜찮 았지만 다른 경우가 발생한다는 것입니다. 어쨌든 망막 디스플레이 문제를 극복하기 위해? – Zhen

+0

내가 이런 일이 생길 때 나는 몰라. 그러므로 나는 언제 높이를 조정해야할지 모른다. – Zhen

관련 문제