2017-03-23 3 views
3

내 iOS 앱은 다음 레이아웃 하나있는 UITableViewCell와의 tableview을 (2 개 라벨 1 개 버튼을 포함하는 1 stackview)이축소 UIStackView 라인 UILabel의 수를 변경 한 후

enter image description here

사용자가이 버튼을 탭하면 보유 중앙 라벨 라인의 수는 2 0에서 이동하고 다음과 같이 표시됩니다

:

enter image description here

지금 여기에 두 가지 문제가 있습니다 I 스택의 빈 뷰 추가 구성 문제 1에없는 최적 솔루션을 발견 셀

을 크기 조정 UIStackView

2)를 크기 조정

1). (invalidateIntrinsicContentSize가 작동하지 않음). 두 번째 스크린 샷에서 볼 수 있듯이

let emptyView = UIView() 
emptyView.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 
stackView.addArrangedSubview(emptyView) 

셀 크기를 조정하지 않고이이 stackview 또는 셀 자체에 기인 있는지 확실하지 않습니다.

단추 이벤트가 내부에서 처리 될 때 UITableViewCell 하위 클래스 내에 코드를 작성한다는 사실을 지적하고 싶습니다. 더 자신의 프레임 안에 뷰를 배치하는 대신 자신의 프레임을 조정하거나 가장 좋은 방법이 될 수 없습니다 ... 그것은 설계 할 수

// dynamic cell sizing 
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    return UITableViewAutomaticDimension 
} 

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 

    return CGFloat(cellEstimatedHeight) 
} 
+0

해당 indexPath에 대한 해당 테이블 뷰를 새로 고침 하시겠습니까? –

+0

셀 내부에서 : 'let tableview = self.superview as? UITableview tableview.reloadData()' 하지만 작동하지 않습니다 – Claus

+0

그것은 한 행에 대해서만 같을 것이라고 생각합니다 – Claus

답변

0

UIStackView :

기록에 대한의 tableview 동적 크기 조정을 사용하고 있습니다 전망에.

레이아웃을 간단하게 만들려면 일반적인 제약 조건을 적용하여 요소를 배치하는 것이 좋습니다.

이 예를 살펴 : https://github.com/DonMag/DynamicCellHeight

표 B는 레이아웃 (표 A는 내가 함께 놀았 다른 레이아웃이었다) 달성 하나 방법입니다.

셀의 크기를 조정하는 동안 주 레이블을 유지하려면 약간의 속임수를 썼습니다. 아마도 더 나은 방법을 찾을 수 있습니다. (재 편집 - 네, 더 좋은 방법을 찾았습니다.)

이해가된다면 알려주세요 - 약간의 조정을하고 싶을 것입니다.

+0

내가 시도 jQuery과 셀 내부에서 셀의 크기 조절을 트리거 할 수있는 방법이 필요합니다 : 'self.stackView.invalidateIntrinsicContentSize()' 'self.setNeedsLayout()' 'self.setNeedsDisplay() ' 하지만 아무것도 아냐 – Claus

+0

잠시만 기다려주세요. 나는 당신에게 모범이 될 것입니다 ... – DonMag

+0

더 간단한 레이아웃을 사용할 수는 있지만 솔직히 말해서 저는 UIStackView가 작동하는 방식을 좋아하며이 선택을 고집하고 싶습니다. . – Claus