많은 양의 레이블이 구문 분석 된 XML로 채워진 뷰가 있습니다. 해당 뷰는 UIScrollView 내에 있습니다. 일부 XML은 레이블에 비해 너무 길다. XML 내용을 기반으로 레이블의 크기를 조정합니다. 레이블의 크기를 조정하면 UIView (즉, UIScrollView 내에 있음)의 크기가 조정되지 않아 이후 레이블과 겹칩니다. 나는 이것에 대한 답변을 찾으려고 몇 시간 동안 인터넷을 수색 해왔다. 그러나 내가 시도한 모든 것은 내가 원하는 것을 달성하지 못했다. 어떤 도움이라도 대단히 감사하겠습니다.내용 기반의 UIView 크기 조정
이것은 내 populateLabels 메소드입니다.
-(void) populateLabels {
NSString *noInfo = (@"No Information Available");
lblCgName.text = _Campground.campground;
NSString *cgLoc = _Campground.street1;
NSString *cgCity = _Campground.city;
NSString *cgState = _Campground.state1;
NSString *cgCountry = _Campground.country;
NSString *cgZipPostal = _Campground.zipPostal;
cgLoc = [[cgLoc stringByAppendingString:@", "] stringByAppendingString:cgCity];
cgLoc = [[cgLoc stringByAppendingString:@", "] stringByAppendingString:cgState];
cgLoc = [[cgLoc stringByAppendingString:@", "] stringByAppendingString:cgCountry];
cgLoc = [[cgLoc stringByAppendingString:@" "] stringByAppendingString:cgZipPostal];
lblCgLoc.text = cgLoc;
double dRate = [_Campground.regRate1 doubleValue];
double dRate2 = [_Campground.regRate2 doubleValue];
NSString *rate = [[NSString alloc] initWithFormat:@"$%0.2f",dRate];
NSString *rate2 = [[NSString alloc] initWithFormat:@"$%0.2f",dRate2];
if ([rate2 isEqualToString:@"$0.00"]) {
lblRate.text = rate;
} else {
rate = [[rate stringByAppendingString:@" - "] stringByAppendingString:rate2];
lblRate.text = rate;
}
double dPaRate = [_Campground.paRate1 doubleValue];
double dPaRate2 = [_Campground.paRate2 doubleValue];
NSString *paRate = [[NSString alloc] initWithFormat:@"$%0.2f",dPaRate];
NSString *paRate2 = [[NSString alloc] initWithFormat:@"$%0.2f",dPaRate2];
if ([paRate2 isEqualToString:@"$0.00"]) {
lblPaRate.text = paRate;
} else {
paRate = [[paRate stringByAppendingString:@" - "] stringByAppendingString:paRate2];
lblPaRate.text = paRate;
}
lblLocal1.text = _Campground.localPhone1;
lblLocal2.text = _Campground.localPhone2;
lblTollFree.text = _Campground.tollFree;
lblFax.text = _Campground.fax;
lblEmail.text = _Campground.email;
lblWebsite.text = _Campground.website;
NSString *gps = _Campground.latitude;
NSString *longitude = _Campground.longitude;
gps = [[gps stringByAppendingString:@", "] stringByAppendingString:longitude];
lblGps.text = gps;
lblHighlights.text = _Campground.highlights;
lblHighlights.lineBreakMode = UILineBreakModeWordWrap;
lblHighlights.numberOfLines = 0;
//label resizing
CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [_Campground.highlights sizeWithFont:lblHighlights.font
constrainedToSize:maximumLabelSize
lineBreakMode:lblHighlights.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = lblHighlights.frame;
newFrame.size.height = expectedLabelSize.height;
lblHighlights.frame = newFrame;
lblTents.text = _Campground.tents;
lblNotes.text = _Campground.notes;
lblDirections.text = _Campground.directions;
lblRentals.text = _Campground.rentals;
}
당신은 http://stackoverflow.com/questions/2998336/how-to-create-a-uiscrollview-programmatically를 참조하십시오. 이것은 원하는 종류의보기를 만드는 데 도움이 될 것입니다 ... – rishi
감사합니다. 입력,하지만 그건 내가 뭘 찾고 있어요. 그들은 코드로 스크롤보기를 만들고 크기를 조정합니다.내가 이미 가지고있는 스크롤보기 내에서 이미 가지고있는 뷰의 크기를 재조정하려고합니다. 모든 것이 작동하고 스크롤을 완전히 내립니다. 레이블이있는보기를 확장하면됩니다. – tallybear
먼저 모든 레이블을 만들 것을 제안 할 수 있습니다. 이제이 후 뷰 높이를 다이내믹하게 계산할 수 있습니다 - label_height + offset_height_between_label + header_footer_offset. 이제이 mch 높이로보기를 만들 수 있고 거기에 레이블을 추가 할 수 있습니다. – rishi