Development Tip

Xcode에서 스토리 보드 파일에 대한 불필요한 편집을 피하는 방법은 무엇입니까?

yourdevel 2020. 12. 31. 23:01
반응형

Xcode에서 스토리 보드 파일에 대한 불필요한 편집을 피하는 방법은 무엇입니까?


내 xib 파일 중 하나로 이동하면 Xcode가 파일을 터치 한 것으로 표시합니다. 실행 취소 및 되돌리기는 효과가 없습니다. 저장은 해를 끼치 지 않는 것처럼 보이지만 결함으로 인해 추가 git 작업이 자주 발생합니다.

다른 사람이 이것을 보거나 내 MainWindow.xib에서 원인이 될 무언가에 대한 아이디어가 있습니까?

2016 년 편집-여전히 진행 중!


Apple은 이것이 알려진 문제라고 말합니다.

이는 버그 ID # 9847336에 대한 후속 조치입니다. 추가 조사 결과 알려진 문제로 확인되었으며 현재 엔지니어링 팀에서 조사 중입니다. 이 문제는 원래 버그 ID # 9056156으로 버그 데이터베이스에 제출되었습니다.이 중복 문제를 추적하는 데 사용 된 원래 버그 번호는 Duplicate / OrigBug # 형식의 State 열에서 찾을 수 있습니다.


이 매우 성가신 버그를 해결하기 위해 다양한 솔루션을 시도한 후 작동하는 한 가지 방법을 찾았습니다 (확실히 "수정"은 아니지만 해결 방법입니다).

완료되면 컨트롤러를 잠급니다.

스토리 보드에서보기 컨트롤러를 선택하고 ID 검사기를 열고 문서 섹션의 하단에 잠금 드롭 다운이 표시됩니다. 잠금 드롭 다운에서 "모든 속성"을 선택합니다.

문제를 제공하는 모든 컨트롤러 (또는 일반적으로 모든 컨트롤러 만 해당)에 대해이 작업을 수행하면 스토리 보드를 열 때 Xcode가 다양한 요소의 프레임을 수정하지만 즉시 실행 취소합니다. 변화.

그러면 다음과 같은 개발주기가 발생합니다.

  1. 뷰 컨트롤러 잠금 해제
  2. 필요한 변경 수행
  3. 뷰 컨트롤러 잠금
  4. 범하다

잠금 기능은 필요에 더 적합한 경우 뷰별 케이스에서도 작동합니다.

버그는 꽤 오랫동안 존재 해 왔으며 조만간 수정되지 않는 것으로 보이므로 안타깝게도 지금은이 정도면 충분할 것입니다.


개인적으로 알려진 버그라는 것을 아는 것이 문제를 정확히 해결하지 못한다고 생각합니다. 여기에 내가 지금까지 알아 낸 것과 그것들이 나오지 않게하는 방법이 있습니다.

참고 : 이것은 AutoLayout이 활성화 된 스토리 보드 용입니다. 아직 수동 스토리 보드에 대해서는 아직 알아 내지 못했습니다.

아래는 버튼의 예입니다.

<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ebd-ny-Ill">
    <rect key="frame" x="97" y="5" width="135" height="30"/>
    <color key="backgroundColor" white="0.94557291669999999" alpha="1" colorSpace="calibratedWhite"/>
    <constraints>
        <constraint firstAttribute="width" constant="86" id="bXV-mS-ksp">
            <variation key="heightClass=regular" constant="135"/>
        </constraint>
    </constraints>
    <fontDescription key="fontDescription" type="system" pointSize="13"/>
    <state key="normal" title="See Full Menu">
        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    </state>
    <variation key="default">
        <mask key="constraints">
            <exclude reference="bXV-mS-ksp"/>
        </mask>
    </variation>
    <variation key="heightClass=regular" misplaced="YES">
        <rect key="frame" x="97" y="5" width="135" height="28"/>
        <mask key="constraints">
            <include reference="bXV-mS-ksp"/>
        </mask>
    </variation>
    <connections>
        <action selector="showMenu:" destination="eQk-yf-uDh" eventType="touchUpInside" id="xOP-Se-FXQ"/>
    </connections>
</button>

살펴보면 버튼 <rect/>에 UI 항목의 크기와 위치를 정의 하는 요소가 있음을 알 수 있습니다 . 아래를 보면 <variation/>크기 클래스에 따라 위치 변경을 설명하는 라는 요소도 표시 됩니다. 이에 대한 위치를 수정하려면 다음 단계를 사용해야합니다.

  1. Xcode에 표시되는 경고를 살펴보십시오. 해당 UI 요소에 대해 변경해야하는 사항을 기록해 둡니다.
  2. 외부 (텍스트) 편집기에서 스토리 보드를 엽니 다.
  3. 스토리 보드에서 UI 요소를 찾습니다.
  4. <rect/>에서 경고가 제안하는 것과 일치하도록 값을 변경하십시오 <variation/>.
  5. 외부 편집기에서 파일을 저장하십시오.
  6. Xcode로 돌아갑니다. 모든 제약을 다시 계산하게하십시오.
  7. 다시 표시되는 UI 요소에 대한 경고를 수락하십시오.
  8. If you go back to the external editor, you'll notice that the <variation/> element is gone.

In my example, I had to update x="97" to x="597".

I'm still working on elements that don't have a <variation/>. I'll update this answer as soon as I figure it out.

ReferenceURL : https://stackoverflow.com/questions/5900245/how-to-avoid-xcode-gratuitous-edits-to-storyboard-files

반응형