programing

iPhone xib를 iPad xib로 변환하시겠습니까?

closeapi 2023. 8. 9. 20:46
반응형

iPhone xib를 iPad xib로 변환하시겠습니까?

어떻게 하는 거지?비디오 튜토리얼을 하나 봤는데 화면이 너무 작았습니다.또한 보기 크기를 변경하는 것 외에 iPad로 변환하기 위해 아이폰 앱을 크게 변경해야 하는 것이 있습니까?

몇 가지 사항으로 범위를 좁힐 수 있었기 때문에 다음과 같은 단계를 수행할 수 있었습니다.

iPhone xib 파일의 복사본을 만들어 프로젝트에 추가합니다.

파일(inxcode) 우클릭 후 다른 이름으로 열기 > 소스 코드

두 번째 줄은 다음과 같습니다.

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">

다음으로 대체:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">

"IBCocoaTouchFramework"를 검색하고 모든 항목을 "IB"로 바꿉니다.IPad 프레임워크"

파일 저장 후 다른 이름으로 열기 > Interface Builder - iOS

파일은 여전히 일반 iPhone xib처럼 보일 수 있지만, 저는 속성 검사기에서 상태 표시줄을 "검은색"으로 변경한 후 나머지 xib를 iPad xib에 "스냅"했습니다.

Xcode 5에서는 다음과 같이 해야 합니다.

찾기:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">

다음으로 대체:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">

참고로 우리는 단지 iPad를 추가할 뿐입니다.type그리고.targetRuntime특성.

연 후에는 조정할 새 크기를 선택합니다.예: iPad 전체 화면.

Xcode 3이 있는 SDK를 가지고 있다고 가정합니다.

  1. IB를 엽니다.
  2. XIB를 엽니다.
  3. 파일 -> 자동 크기 조정 마스크를 사용하여 iPad 버전을 만듭니다.

XCode4:

xcode 4에서는 단일 xib에 대해 그렇게 할 수 없지만 각 ipad 버전을 한 번에 만들 수 있습니다.

iPhone 전용으로 구성된 프로젝트를 ipad로 구성하기 전에 대상을 마우스 오른쪽 버튼으로 클릭하고 복제를 클릭합니다.

이제 "복제 및 ipad로 전환"을 선택합니다.새 대상과 새 xib 집합이 생성됩니다.그것은 약간의 일을 줄일 것입니다.

도움이 되길 바랍니다.

Xcode 4:

자동 크기 조정 마스크를 사용하여 iPad 버전 만들기 기능이 Xcode 4에서 제거되었습니다.닙(.xib) 파일 형식이 변경되지 않았기 때문에 현재 가장 쉬운 방법은 변환에 Xcode 3을 사용하는 것입니다.

이제 다른 폴더를 선택하기만 하면 Xcode 3 및 4를 모두 동일한 시스템에 설치할 수 있습니다(디스크 이미지의 설치 지침 참조).

그렇지 않으면 iPhone 버전에서 UI 요소를 복사/붙여넣고 코드에 다시 연결해야 합니다.

컴퓨터가 컴퓨터의 일을 하도록 하는 것은 어떻습니까?
더 빠르고 오류 위험이 적습니다.

다음은 Jag의 훌륭한 답변을 기반으로 하지만 sed로 자동화된 워크플로우입니다.

먼저, 몇 가지를 설정해 보겠습니다.우리는 이것을 한 번만 하면 됩니다.
있는 을 두 .IB가 들어 있는 디렉터리에서 다음 내용을 포함하는 두 개의 파일을 만듭니다.

iPhoneToiPadXIBConversion.sed:

s/com.apple.InterfaceBuilder3.CocoaTouch.XIB/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g
s/IBCocoaTouchFramework/IBIPadFramework/g

파일 및일iPadToiPhoneXIBConversion.sed:

s/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/com.apple.InterfaceBuilder3.CocoaTouch.XIB/g
s/IBIPadFramework/IBCocoaTouchFramework/g


이제 설치가 완료되었습니다.XIB를 변환하려면 터미널에 다음 두 가지 명령 중 하나를 입력합니다.

iPhone에서 iPad로 변환:

sed -f iPhoneToiPadXIBConversion.sed  MyViewController~iphone.xib  > MyViewController.xib

iPad에서 iPhone으로 변환:

sed -f iPadToiPhoneXIBConversion.sed  MyViewController.xib  > MyViewController~iphone.xib





, 더 두 의 함수를 재를위해두에가미지함만다더변단니욱합순화환을들.

function convertiPadXIBToiPhone () {
    newXibName=`echo "$1" | /usr/bin/sed "s/.xib/~iphone.xib/"`
    `/usr/bin/sed -f iPadToiPhoneXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

function convertiPhoneXIBToiPad () {
    newXibName=`echo "$1" | /usr/bin/sed "s/~iphone.xib/.xib/"`
    `/usr/bin/sed -f iPhoneToiPadXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

이를 zsh 구성에 추가한 후에는 XIB를 변환하는 작업이 다음과 같이 간단합니다.

convertiPadXIBToiPhone MyViewController.xib

또는

convertiPhoneXIBToiPad MyViewController.xib

"소스 코드로 보기"를 사용하여 XCode 4에서 XIB를 엽니다.

전에

문제의 펜촉을 백업합니다.

하나.

이 제품을 대체합니다.

    <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
        <integer value="1056" key="NS.object.0"/>
    </object>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

이 외의 이유로

    <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

두명

그런 다음 통합 IB를 사용하는 니브의 각 보기에 대해 삭제한 다음 실행 취소를 누릅니다.

세개

그리고 나서 여러분이 가지고 있을지도 모르는 역겨운 느낌을 없애기 위해 뜨거운 물에 샤워하세요.

XIB를 텍스트 파일로 열고 UIView 크기를 변경할 수 있습니다.

탐색기에서 XIB 파일을 마우스 오른쪽 단추로 클릭하고 "이름 지어 열기..."를 선택합니다.

UIView 참조를 찾아 프레임 값을 변경합니다.

<object class="IBUIView" id="191373211">

<string key="NSFrame">{{0, 20}, {768, 1024}}</string>

4은 해당 하고 XCode 4.3.2 iPad를 추가하는 입니다.~ipad파일 이름의 접미사입니다.그리고 "myVC.xib"와 "myVC~ipad.xib"를 모두 프로젝트에 추가합니다."~iPad"가 아니라 "~iPad"입니다.당신의 앱은 iPad에서 실행될 때 자동으로 ~ipad 버전을 사용할 것입니다.리소스 파일(예: 이미지)에서도 작동합니다.

지금 내가 찾을 수 있는 가장 좋은 참고 자료는...https://developer.apple.com/library/ios/ #documentation/Cocoa/개념/로딩 리소스/ImageSoundResources/ImageSoundResources.html

Xcode 5 업데이트

targetRuntime="iOS.코코아 터치"

로.

targetRuntime="iOS.코코아 터치.iPad"

Xcode 4.5에서 수행한 작업을 문서화합니다.

  1. fixpattern.sh

    cp REPLACEME_Iphone.h REPLACEME_Ipad.h
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.h > REPLACEME_Ipad_tmp.h
    mv REPLACEME_Ipad_tmp.h REPLACEME_Ipad.h
    cp REPLACEME_Iphone.m REPLACEME_Ipad.m
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.m > REPLACEME_Ipad_tmp.m
    mv REPLACEME_Ipad_tmp.m REPLACEME_Ipad.m
    cp REPLACEME_Iphone.xib REPLACEME_Ipad.xib
    sed -e 's/com.apple.InterfaceBuilder3.CocoaTouch.XIB   /com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/IBCocoaTouchFramework/IBIPadFramework/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/320, 416/768, 1004/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    
  2. 의 목록을 할파목만들로 합니다.fixfile각 줄은 확장자가 없는 파일 이름입니다.이 원래파이이인 AAA_Iphone.h그냥 놓아두다AAA원본 파일이 이 패턴이 아닌 경우 스크립트를 수정해야 합니다.

  3. 명령줄에서 실행

    cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
    
  4. fixall.sh

  5. 새로 만든 파일을 프로젝트에 추가

Jag의 대답은 훌륭합니다.그러나 Xcode 5에서 XIB를 열거나 생성하면 함정이 있습니다.

Xcode 5의 경우

iPhone xib 파일의 복사본을 만들어 프로젝트에 추가합니다.

파일(inxcode) 우클릭 후 다른 이름으로 열기 > 소스 코드

두 번째 줄은 다음과 같습니다.

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510"

로 변경합니다.

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510"

8번째 줄은 다음과 같습니다.

<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>

로 변경합니다.

<rect key="frame" x="0.0" y="64" width="768" height="960"/>

이상으로 iPad XIB를 사용합니다.하지만 여전히 진짜 공은 Jag에게 있습니다.

Jag가 제공한 답변 외에도 "320,460"을 검색하여 768,1024로 교체하면 XIB는 iPad 치수로 크기가 조정됩니다.

Xcode 4의 경우,

각 장치에 대해 별도의 대상을 생성할 필요는 없습니다.대신 프로젝트 요약의 장치를 이미 iPhone에 있는 범용으로 변경할 수 있습니다.이 내용은 Xcode 4.2에서 iOS 5 앱을 범용으로 업데이트 링크에서 확인할 수 있습니다.따라서, 그것은 당신을 위해 전환을 할 것입니다.

가장 좋은 해결책은 항상 아이폰으로 개발한 다음, 완료되면 ipad 대상을 추가하여 xcode가 업데이트하도록 하는 것 같습니다.저도 같은 실수를 했습니다. 처음 몇 개의 파일을 만드는 범용 파일을 선택했지만, 다른 모든 xib는 ipad 폴더에서 직접 재생성해야 했습니다.빅 페인

Jag has given Great Answer.

경우에 따라.

iPhone XIB를 ipad XIB에서 변환할 필요가 없습니다. 자동 크기 조정 마스크를 사용하고 ipad를 실행할 수도 있습니다.적절한 자동 크기 조정 마스크를 사용하여 범용 모드에서 실행되도록 APP를 구성하기만 하면 됩니다.

교체하기만 하면 됩니다.

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch"

와 함께

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch.iPad"

언급URL : https://stackoverflow.com/questions/2488280/converting-iphone-xib-to-ipad-xib

반응형