Xcode 9- "고정 너비 제한으로 인해 클리핑이 발생할 수 있음"및 기타 현지화 경고
새 Xcode를 다운로드했고 Interface Builder에서 다음과 같은 경고와 관련된 많은 문제가 있습니다.
고정 폭 제약으로 인해 클리핑이 발생할 수 있음
다음과 같이 보입니다 :
여러 언어로 현지화되어 있고 다른 언어에서는 레이블 크기가 변경 될 수 있다는 경고를 이해하지만 내 앱에는이 문제가 없습니다. 어제 Xcode 8에서 실행하고 테스트했지만 괜찮 았습니다. 무의미한 새로운 제약 조건을 추가하는 데 몇 시간과 몇 시간을 보내고 싶지 않습니다.
제안 된 해결책이 있습니까?
내 앱에 여러 언어가 없어도 동일한 경고 가 표시되어 실제로 무슨 일이 일어나고 있는지 알 수있었습니다. . .
여기에는 몇 가지 다른 일이 있습니다. 객체 간격의 너비를 고정 너비에서 크거나 같 거나 작게 변경하여 내 앱에서 고정 너비 경고 를 끌 수있었습니다 .
인터페이스 빌더에서 객체를 선택하고 크기 관리자로 이동하여 객체를 변경하면됩니다.
또는 문서 개요에서 제약 조건을 선택하고 크기 관리자로 이동하여 여기에서 변경하십시오.
스크린 샷 상단에있는 경고 :
중심 구속 조건이있는 고정 선행 및 후행 구속 조건이 클리핑을 유발할 수 있음
다음은 정확히 동일한 경고가 표시되는 내 앱의 스크린 샷입니다.
나는 @ 기호가 붙은 레이블 이 버튼을 앞뒤로 설정하고 가운데를 등급 레이블에 맞추도록했습니다 . 나는 일단 중앙 정렬 제약 조건을 제거 , 경고는 사라,하지만이 객체의 잘못 배치 세트 남겨졌다.
그런 다음 스택 뷰 를 받아들이겠다고 사임했습니다 . 사용하는 것만 큼 성가 시게, 모든 제약 조건과 설정을 올바르게하면 경고없이 아름답게 배치됩니다.
편집하다
으로 휴식이 의견의 글을, 때로는 단순히 확실 두 가지 요소가 겹치지 않도록하고있다, 당신이 필요로 할 것이다> = 0를 추가.
제한 조건에 따라 "언어 방향 존중"을 비활성화하여 경고를 끄고 도움이되는지 확인할 수 있습니다. 구속 조건을 선택하고 속성 / 크기 검사기를 엽니 다. 첨부 된 이미지를 참조하십시오.
앱을 다른 언어로 지역화하지 않으려는 경우이 솔루션에 폴 백이 없어야합니다. 현지화 된 앱의 경우 레이블 및 글꼴 크기를 더 잘 인식해야합니다.
ps이 솔루션은 iOS에서 작동합니다. macOS의 경우 경고를 끄려면> = 또는 <=를 시도하십시오.
아래 그림의 pps 레이블은 NSMutableAttributedString을 사용하여 단일 UILabel 또는 UITextView에서 AutoLayout 및 ValueString 속성을 사용하여 훨씬 쉽게 만들 수 있습니다. 이미지는 데모 용입니다.
현지화 된 레이블 및 버튼의 경우이 경고는 의미가 있으며 레이블이 겹치지 않도록 필요한 제한 조건을 제공해야합니다. 그들이 지금 겹치지 않는다면 미래에 있을지도 모르므로 제약을 제공하는 것은 아프지 않을 것입니다.
Xcode를 사용하면 이러한 제약 조건을 자동으로 추가 할 수 있습니다.
스토리 보드의 문서 개요에서 노란색 화살표를 클릭하고 화면의 텍스트 위치 (왼쪽 또는 오른쪽)에 따라 "고정 선행"또는 "고정 후행"을 선택하십시오. 대부분의 문제를 해결합니다.
텍스트가없는 단추 (이미지 만) 에이 문제가있는 경우 단추에 대해 여전히 설정 될 수있는 "기본 제목"을 제거하십시오.
을 사용하면 is 및 속성을 Labels
설정 하여 다음과 같이 경고 를 제거 할 수 있습니다 .Lines
0
Autoshrink
Minimum Font Size
Fixed Width Constraints May Cause Clipping
또 다른 빠른 해결책!
제목을 일반 텍스트에서 속성 텍스트로 변경하여 UIButton의 경우 내 문제가 해결되었습니다.
이 질문에 이미 답변했지만 내 경우 에이 오류를 해결하기 위해 수행 한 것은 "종횡비"속성을 추가 한 다음 너비 또는 높이 제약 조건을 제거하고 이것이 잘 작동하고 노력이 덜한 것이 었으며 계속 유지할 수있었습니다. 동일한 출력과 다른 장치에 대한 내 견해를 조정하십시오.
스위프트 4, Xcode 9.1 :
이 문제에 대해서는, 개체가 생각하는 그것의 슈퍼 뷰의 맥락에서 정확한 중심 위치의 모르는 및 사용하여 제거, 이상 대부분의 시간의 제대로 작동하지 않습니다 또는 다른 선두 / 설정을 trealing합니다. 먼저 수퍼 뷰의 올바른 제약 조건을 확인해야합니다.
수퍼 뷰가 올바르게 설정된 경우 "수평 컨테이너" 제약 조건 을 설정하여 뷰에서 올바른 위치를 개체에 "설명"하려고 할 수 있습니다 .
버튼에 고정 너비 제한이 필요한 경우 너비 제한 우선 순위를로 설정하십시오 700
.
같은 문제가 있었지만 변경 >=
하면 자동으로 상수를로 설정 합니다. 예를 들어 0
선택 60
하면 경고가 다시 나타납니다. 그래서 나는 문제와 함께 루프에있었습니다.
에 삽입하는 것을 고칠 수 있습니다 Label
.View
Editor > Embed In > View
에서 Label
I 세트 Top
, Bottom
, Leading
와 Trailing
와constant = 0
에서 View
내가 설정 constraints
내가 전에 기대되었다.
Xcode 9로 옮길 때도 같은 문제가 있었고 특정 종류의 레이아웃에 유용한 접근법을 찾았습니다. 필자의 경우 두 열 (UILabels)이 고정 너비이고 다른 열이 가변 너비 인 테이블 헤더를 원했습니다. 열 너비를 어떻게 지정했는지에 관계없이 (등이 아닌 크거나 같은 제약 조건 사용 등 포함) 가능한 클리핑에 대한 경고가 계속 나타납니다. 필자의 경우 가변 너비 열 (UILabel)이 필요한 경우 클립하기를 원했습니다. 나는 경고를 무시했을 수도 있지만 그렇게하는 것을 좋아하지 않습니다.
이 방법은 적절한 크기 제약 조건으로 UIView를 만들고 UILabel을 하위 뷰로 UIView에 포함시키는 것입니다. 그런 다음 필요한 경우 잘림이 발생하고 경고가 표시되지 않습니다. 이것은 UIView / embedded UILabel이 StackView에 있는지 여부에 관계없이 작동합니다.
이것은 본질적으로 Haroldo Gondim의 접근 방식과 동일하지만 StackView의 유무에 관계없이 작동합니다.
다음 이미지는 StackView를 사용하거나 사용하지 않는 방법을 보여줍니다. "SpacerName"은 레이블을 포함하는 가변 너비 UIView이고 "SpacerPD"는 고정 너비 80입니다. [색상은 중요하지 않습니다. 보기가 어디에 있는지 보여주기 위해
아래 이미지에서 볼 수 있듯이 텍스트 상자를 세로 가운데로 설정하고 레이블에 왼쪽 여백 제약 조건을 설정했지만 제약 조건을 정의하지 않았기 때문에 "고정 너비 제약 조건으로 인해 클리핑 이 발생할 수 있습니다 " 라는 오류가 발생 했습니다. 레이블과 관련하여 텍스트 상자의 경우 XCode는 텍스트 상자가 레이블을 클리핑 할 수 있음을 경고했습니다.
텍스트 상자에 왼쪽 제약 조건을 추가하여 레이블과 항상 일정 거리를 유지하면 오류가 XCode에 의해 해결 된 것으로 간주되어 더 이상 제약 조건 경고로 귀찮게하지 않았습니다.
슈퍼 뷰의 가장자리에서 같은 패딩이있는 버튼을 사용하려고 할 때 비슷한 문제가 발생했습니다.
에 horizontal center
제약 조건과 equal widths
제약 조건을 사용했습니다 super view
.
오류를 수정하려면 : 고정 너비 제약 조건으로 인해 클리핑이 발생할 수 있음 "및 기타 현지화보기 / 객체를 선택하고"크기 관리자 표시 "로 이동 한 후 너비 제약 조건을 찾아 상수를 더 크게 또는 같게 설정해야합니다.
오류 수정 : 선행 / 트레일 링 구속 조건이 누락되어 다른 뷰와 겹칠 수 있습니다.
이는 Xcode가 불평하는 뷰 / 객체가 인접 뷰에 대한 선행 또는 후행 제한 조건이 누락되었음을 의미합니다.
컨트롤을 누른 상태에서 뷰 / 오브젝트 옆으로 드래그
'Programming' 카테고리의 다른 글
아름다운 수프와 ID로 div와 그 내용 추출 (0) | 2020.06.28 |
---|---|
줄거리 틱 수 감소 (0) | 2020.06.28 |
java : 특정 시간 (초) 후에 함수 실행 (0) | 2020.06.28 |
RVM : gemset의 모든 gem 제거 (0) | 2020.06.28 |
누군가가 collection_select를 명확하고 간단한 용어로 설명 할 수 있습니까? (0) | 2020.06.28 |