2017-10-26 2 views
0

* 주석으로 언급 된 라인은 모든 제약 조건에 바인딩되지 않은 하위 뷰를 상위 뷰로 확장하고 있습니다.높이 제한 증가, "런타임에 추가 된 하위 뷰"

NSMutableArray* tagItemLabels=[NSMutableArray new]; 
    NSMutableArray* data = [NSMutableArray arrayWithObjects:@"One",@"One Hundred",@"One Hundred Eleven",@"Thousand One Hundered",@"two",@"Three", nil]; 

    for (NSString* title in data) { 

     MSTag * tagItem=[[[NSBundle mainBundle] loadNibNamed:@"MSTag" owner:self options:kNilOptions] objectAtIndex:0]; 
     [tagItem.lblTitle setText:title]; 
     [self.tagView addSubview:tagItem]; 

     CGRect frame = tagItem.frame; 
     //frame.size.height=30; 

     CGSize expectedLabelSize = [title sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}]; 

     if (tagItemLabels.count<=0) { 
      frame.origin.x=8; 
      frame.origin.y=8; 
      frame.size.width=expectedLabelSize.width+70; 
      frame.size.height=30; 
     }else{ 
      frame=((UIView*)([tagItemLabels lastObject])).frame; 
      frame.origin.x+=frame.size.width+12; 
      frame.size.height=30; 
      frame.size.width=expectedLabelSize.width+70; 
      NSLog(@"%f==%f",frame.origin.x+tagItem.frame.size.width+12,self.tagView.frame.size.width); 

      if (frame.origin.x+frame.size.width>self.tagView.frame.size.width) { 
       //if (frame.origin.x+frame.size.width>self.TagView.frame.size.width) { 
       frame.origin.x=8; 
       frame.origin.y+=frame.size.height+8; 
      } 
     } 

     //***If I write this line my views get streched!***// 
     self.constraintTagViewHeight.constant=frame.origin.y+frame.size.height; 

     [tagItem setFrame:frame]; 
     [tagItemLabels addObject:tagItem]; 
    } 

enter image description here

+0

여기에서 달성하려는 것은 무엇입니까? 당신이 여기에서 묻고있는 것이 명백하지 않습니다 ... 분홍색으로 된보기가 커져서 모든 레이블이 그 안에 들어 있기를 원하십니까 (3 개의 레이블보다 약간 큼)? – Ladislav

+0

예, 분홍색은이 모든 tagView의 상위보기입니다. 나는 하나의 선택 아래에 다른 부모보기를 추가해야하며이 모든 부모보기는 스크롤보기로 표시됩니다. 먼저 tableView를 사용하여이 모든 작업을 시도하고 다른 프로토 타입 셀을 만들고 행 높이 자동 치수를 지정합니다. 그러나 셀에서도 같은 일이 발생하며 테이블 뷰의 셀을 시작 및 끝내기 호출 후 셀 높이를 높이면 셀의 항목 제약이 증가합니다. 태그 높이도 증가합니다. 제목과 십자가 btn은 태그의 가운데 맞춤입니다. 위/아래 제약이 없습니다. –

+1

'MSTag * tagItem = [[[NSBundle mainBundle] loadNibNamed : @ "MSTag"소유자 : 자체 옵션 : kNilOptions] objectAtIndex : 0];'아래에'tagItem.autoresizingMask = UIViewAutoresizingNone'을 추가 해보세요 XIB 파일에 자동 마스크가 있습니다 유연한 높이이므로 superview의 높이가 바뀌면 태그 높이가 높아집니다. – Ladislav

답변

1

그것은 자동 크기 마스크 유연한 높이로 설정 한 XIB 파일처럼 보이는, 따라서 그 높이가 슈퍼 뷰의 높이가 변경 될 때, 단지

tagItem.autoresizingMask = UIViewAutoresizingNone

아래 추가 변경

MSTag * tagItem=[[[NSBundle mainBundle] loadNibNamed:@"MSTag" owner:self options:kNilOptions] objectAtIndex:0];

정확한 자동 크기 조정 마스크가 설정되고 수퍼 뷰의 높이가 변경 될 때 태그의 높이가 증가하지 않습니다.