iPhone xib를 iPad xib로 변환 하시겠습니까?
어떻게하나요? 비디오 튜토리얼 하나를 봤는데 화면이 너무 작았습니다. 또한보기 크기를 변경하는 것 외에 iPad로 변환하기 위해 iPhone 앱을 변경해야하는 다른 주요 변경 사항이 있습니까?
Xcode 3 이 포함 된 SDK가 있다고 가정합니다 .
- IB를 엽니 다.
- XIB를 엽니 다.
- 파일-> 자동 크기 조정 마스크를 사용하여 iPad 버전을 만듭니다.
몇 가지로 범위를 좁힐 수 있었으므로 다음은 저에게 도움이되는 단계입니다.
1) iPhone xib 파일의 사본을 만들어 프로젝트에 추가하십시오.
2) 파일 (xcode에서)을 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 열기> 소스 코드
3) 두 번째 줄은 다음과 같아야합니다.
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
다음으로 교체 :
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
4) "IBCocoaTouchFramework"를 검색하고 모든 항목을 "IBIPadFramework"로 바꿉니다.
5) 파일을 저장하고 다른 이름으로 열기> 인터페이스 빌더-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 전체 화면.
XCode4 :
xcode 4에서는 단일 xib에 대해 그렇게 할 수 없지만 각 ipad 버전을 한 번에 만들 수 있습니다.
프로젝트를 ipad로 구성하기 전에 iphone 전용으로 구성한 경우 대상을 마우스 오른쪽 단추로 클릭하고 복제를 클릭하십시오.
이제 "복제 및 ipad로 전환"을 선택합니다. 새 대상과 새 xib 세트가 생성됩니다. 일부 작업을 줄여야합니다.
도움이 되었기를 바랍니다.
Xcode 4 :
는 자동 크기 조정 마스크를 사용하여 아이 패드 버전 만들기 기능은 가장 쉬운 방법은 변경되지 않은 펜촉 (.xib) 파일 형식 때문에, 변환을 위해 엑스 코드 3을 사용하는 것입니다 지금 엑스 코드 4에서 제거되었습니다.
Xcode 3 및 4는 이제 단순히 다른 폴더를 선택하여 동일한 시스템에 둘 다 설치할 수 있습니다 (디스크 이미지의 설치 지침 참조).
그렇지 않으면 iPhone 버전에서 UI 요소를 복사 / 붙여 넣기 한 다음 코드에 다시 연결해야합니다.
컴퓨터가 컴퓨터 역할을하게하는 것은 어떻습니까?
더 빠르고 오류 위험이 적습니다.
다음은 Jag 의 탁월한 답변을 기반으로 하지만 sed로 자동화 된 워크 플로 입니다.
먼저 몇 가지 설정을 해보겠습니다. 이 작업은 한 번만 수행하면됩니다.
XIB가 포함 된 디렉토리에서 다음 컨텐츠로 두 개의 파일을 작성하십시오.
파일 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
재미를 위해 zsh에서 두 개의 함수를 만들어 변환을 더 간단하게 만들어 보겠습니다.
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를 엽니 다.
전에
문제의 펜촉을 백업합니다.
하나
이 goo 대체
<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>
이 다른 goo를 위해
<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를 사용하는 펜촉의 각보기에 대해 삭제 한 다음 실행 취소를 누르십시오.
세
Then shower in hot water to wipe off that disgusting feeling you might have.
You can open the XIB as textfile and change the UIView size:
Right click on your XIB file in de navigator and select: "open as..." Open as source file.
Find the UIView reference and change the Frame values:
<object class="IBUIView" id="191373211">
<string key="NSFrame">{{0, 20}, {768, 1024}}</string>
In XCode 4.3.2, the easiest way for me to create iPad version of xib is duplicating that xib file and add ~ipad
suffix to the filename. And add both "myVC.xib" and "myVC~ipad.xib" into your project. Note that it is "~ipad" NOT "~iPad". Your app will use that ~ipad version automatically when run on iPad. This also works with resource files (e.g. images).
The best reference I could find at the moment... https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html
Xcode 5 update
targetRuntime="iOS.CocoaTouch"
to
targetRuntime="iOS.CocoaTouch.iPad"
I will document what I did in Xcode 4.5:
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
Create a list of file you want to convert in
fixfile
, each line will be a file name without extension. If you original file name isAAA_Iphone.h
, just putAAA
. If your original file is not of this pattern, you need to revise the script.Run in command line
cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
Review and run
fixall.sh
Add newly created file into project
Jag's answer is great. But there is a catch if an XIB is opened/ created in Xcode 5.
For Xcode 5
1) Make a copy of the iPhone xib file and add it to your project
2) Right click the file (in xcode) and Open As > Source Code
3) The 2nd line should look like:
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510"
change it to
<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510"
4) 8th line should look like this:
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
change it to
<rect key="frame" x="0.0" y="64" width="768" height="960"/>
That's it and there you have iPad XIB. But still the real credit goes to Jag.
In addition to answer given by Jag also search for "320,460" and replace it with 768,1024 and your XIB will be resized to iPad dimensions.
For Xcode 4,
You need not create separate target for each device. Instead, you can change the Devices in project summary to Universal which would be in iPhone already. This is answered in the link Updating iOS 5 App to Universal on Xcode 4.2. Thus, it will do transition for you.
Sounds like the best solution is to always develop as iphone first, then once you are complete done, add the ipad target, letting xcode do the update. I made the same mistake, selected universal to start, which creates the first few files, but then every other xib had to be hand recreated in the ipad folder. Big PAIN
Jag has given Great Answer.
In Some Cases.
No need to convert your Iphone XIB in Ipad XIB . You can Use Autoresizingmask and get Running Ipad also. just need to configure your APP for running in Universal mode with proper autoresizingmask.
Just replace
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch"
with
<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
'Development Tip' 카테고리의 다른 글
socket.io 클라이언트 라이브러리는 어디에 있습니까? (0) | 2020.10.17 |
---|---|
Facebook 앱에서와 같이 프로그래밍 방식으로 설정을 여는 방법은 무엇입니까? (0) | 2020.10.17 |
새로 추가 된 dom 요소에 바인딩되지 않는 jQuery 함수 (0) | 2020.10.17 |
파생 클래스가 수퍼 메서드를 호출하도록 강제하는 방법은 무엇입니까? (0) | 2020.10.17 |
Rails가 현재 설치되어 있지 않다고 계속 알려줍니다. (0) | 2020.10.17 |