2017-09-19 13 views
2

한 줄 레이블에 "중간 잘림"을 사용하려고합니다. "단일 라인 모드 사용"을 선택하고 레이아웃을 "잘림"으로 설정하고 줄 바꿈을 "중간 잘림"으로 설정하고 텍스트 필드의 기본 너비를 "첫 번째 런타임 레이아웃 너비"로 설정하고 컨텐츠 포 착 우선 순위를 250으로 설정했습니다.레이블에서 텍스트 잘림

내의 ViewController에서 layout

:

가 여기에 내가 절단 수 있도록 노력하고되는 < 제목 > 레이블 내 레이아웃의

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    titleLabel.stringValue = "This is a very very long title that should be truncated because it would enlarge the window unnecessary!" 
} 

그것은 작동하지 않습니다, 윈도우가 표시 확대됩니다 완전한 제목과 사용자는 너비를 줄일 수 없습니다.

"Truncates"/ "Truncate Middle"에서 "Wraps"/ "Character Wrap"로 레이아웃과 줄 바꿈을 변경하면 이상하게 작동하지만 잘리지 않고 중간 잘립니다. 나는이 같은 일을 잘라 기대하고

screenshot with wrap

:

이 매우 매우 긴 텍스트는이 ... 윈도우가 필요 RGE!

내가 뭔가를 놓친 것일까 요?

편집 :가 여기에 문제 테스트 할 샘플 프로젝트입니다 : 잘라 내기 중간 들어 https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip

+0

당신의 라벨의 너비는 고정되어 있어야합니다. 두 레이블 (창 및 큰 텍스트)에 대한 후행 제한 조건을 점검하십시오. 현재 그것은 후행 제약이 창 레이블에서 오히려 고정 거리가 긴 라벨을 깨고 결과로 나타나는 것처럼 보입니다. UI 디버깅도 체크인 할 수 있습니다. – Pawan

답변

1

당신은 당신의 콘텐츠 압축 저항의 우선 순위 NSTextView 미만 NSLayoutPriorityWindowSizeStayPut (예를 들어, 499)의을 설정해야합니다. 그렇지 않으면 NSTextView이 콘텐츠를 자르지 않습니다. 나는 499500에서 HorizontalContent Compression Resistance Priority을 설정하여이를 달성 할 수 (Reference)

했다.> 크기 인스펙터 - -

당신은 당신의 라벨을 선택하여이를 수행 할 수 있습니다 나에게 다음과 같은 출력주기> 콘텐츠 압축 저항의 우선 순위

enter image description here

: 잘라 내기 중간 들어

enter image description here

1

을, 당신은뿐만 아니라 중앙에 정렬을 설정해야합니다.

+0

나는 꼬리를 자르고 동일한 문제를 가지고있다. 나는 센터 정렬을 사용하여 가운데를 잘라내려고했지만 여전히 원하는 크기보다 작은 창 크기를 조정할 수는 없습니다. 어쩌면 내가 뭔가를 놓친 것일 수 있습니다. 샘플 프로젝트를 첨부하여 직접 볼 수 있습니다. –

2

이것은 매우 간단합니다. 이 라인을 추가하십시오. override func viewDidLoad()

yourLabel.lineBreakMode = .byTruncatingMiddle 

또는 인터페이스 빌더에서 설정할 수도 있습니다. 레이블을 선택하고 Line BreakTruncate Middle으로 설정하십시오. 당신이 당신의 NSTextView에 대한 자동 레이아웃을 사용하고 NSView을 둘러싼 경우

enter image description here

+0

이것은 AppKit (OS X)에서 현재하고있는 것입니다. AppKit의 Label에서는 UIKit의 레이블에서 잘 작동하는 것처럼 보이지만 텍스트가있는 필드의 크기보다 작은 창 크기를 조정할 수는 없습니다. 레이아웃 제약 조건과 관련이 있어야합니다. –