편집 할 때 NSTextViews를 넣을 outlineView가 있습니다 (outliner app를 생각하십시오). 대부분의 작업이 있지만 일부 동작이 일치하지 않습니다. 내 NSOutlineView에IntrinsicContentSize가 잘못된 높이로 설정되어있는 NSOutlineView의 NSTextView
나는 설정 : 내 세포 뷰에 대한
outlineView?.usesAutomaticRowHeights = true
나는를 NSTextView를 서브 클래스. 나는 다음과 같은 자동 레이아웃 비트 설정 :
self.translatesAutoresizingMaskIntoConstraints = false
setContentHuggingPriority(NSLayoutConstraint.Priority.defaultHigh, for: NSLayoutConstraint.Orientation.vertical)
을 그리고 나는를 NSTextView의 고유 컨텐츠 크기 계산을 오버라이드 (override) :
override var intrinsicContentSize: NSSize {
guard let manager = textContainer?.layoutManager else {
return .zero
}
print("\(manager.usedRect(for: textContainer!).size) \(string)")
return manager.usedRect(for: textContainer!).size
}
(I 위의 코드에서의 layoutManager에 ensureLayout를 호출되었지만 그것은 아무것도 추가하지)
intrinsicContentSize가 아웃 라이너에 추가 될 때 텍스트보기 당 두 번 호출됩니다. 반환 된 크기가 처음에는 정확하지만 두 번째 호출에서 텍스트 중 일부가 불필요하게 줄 바꿈됩니다. intrinsicContentSize에서 네 가지 텍스트보기에 대한 두 패스의 출력이 아래에 나와 있습니다. 열 너비는 281이므로이 문자열 중 어느 것도 감싸지 않아야합니다. 그들은 모두 한 줄 (14 으)로 맞는 첫 번째 패스, 두 번째 패스, 마지막 두 개의 문자열은 가장 긴 문자열이되지 않기 때문에 이상하다, 포장 :
(178.744140625, 14.0) New pointwddwek kelekwelek...
(100.720703125, 14.0) Related Subjects
(119.400390625, 14.0) Related Publications
(87.150390625, 14.0) Related Terms
(178.744140625, 14.0) New pointwddwek kelekwelek...
(100.720703125, 14.0) Related Subjects
(74.705078125, 28.0) Related Publications
(54.484375, 28.0) Related Terms
그것은 지속적으로 같은 문자열입니다 같은 행동을합니다. 예 : "관련 주제"라는 문자열은 줄 바꿈되지 않으며 "관련 용어"라는 문자열은 항상 줄 바꿈됩니다.
뷰가 표시되면 usedRect 값이 의미하는 것처럼 텍스트가 실제로 래핑되지 않습니다. 텍스트가 올바르게 표시되지만 아웃 라이너의 행보기에는 두 줄의 텍스트가 있다고 생각되어 너무 높습니다.
내가 뭔가를 누락 될 수 있습니다 모든 포인터는? 'ensureLayout'은 어떻게 든 이전 계산을 참조한 다음 동일한 문자열을 마지막 계산 된 너비에 맞출 때 문제를 반올림합니까?