iPhone에서 iPad로 스토리보드 변환
나는 있습니다.iPhone
스토리보드가 있는 응용 프로그램입니다.이제 다음을 제공합니다.iPad
응용 프로그램도 마찬가지입니다.그래서 저는 저에게 변환하는 데 도움이 되는 기능이 있는지 물었습니다.iPhone
의스드보의 .iPad
스토리보드
구체적으로 말하면:
비슷한 기능이 있나요, 아니면 수동 방식만 있나요?
저는 일종의 해결책을 찾았습니다.
을 iPhone-Storyboard로 합니다.
MainStoryboard_iPad.storyboard
Xcode를 닫은 다음 텍스트 편집기를 엽니다.
targetRuntime="iOS.CocoaTouch"
로 변경합니다.targetRuntime="iOS.CocoaTouch.iPad"
MainStoryboard_iPad.storyboard의 코드를 다음에서 변경합니다.
<simulatedScreenMetrics key="destination" type="retina4"/>
<simulatedScreenMetrics key="destination"/>
이제 모든 것을 저장하고 Xcode를 다시 엽니다.iPad-Storyboard의 내용은 iPhone 파일과 동일하지만 모든 것이 흐트러질 수 있습니다.
이것으로 몇 시간을 절약했습니다. 이것이 당신에게 도움이 되기를 바랍니다.
범용 프로젝트를 생성했다면 기본적으로 빈 iPad 스토리보드가 생성되었을 것입니다. iPhone 스토리보드 선택(명령+A), 복사(명령+C)를 선택하여 iPad 스토리보드에 붙여넣기만 하면 됩니다.컴파일하기 전에 빈 스토리보드에서 새로 복사된 스토리보드로 진입점을 이동해야 합니다.
그것은 저에게 별로 효과가 없었습니다.저는 조금 다른 것을 했습니다.
- iPad 버전에 대한 새 스토리보드 파일 만들기
- 새 파일과 복사할 파일을 텍스트 랭글러(텍스트 편집기)에서 모두 엽니다.
- 이러한 xml 태그 사이에서 이전 파일의 xml 텍스트를 새 파일로 복사했습니다.
- 번째 태그 첫 째번그태
<scenes> <!--Contents View Controller-->
- 여기에 붙여넣기
- 태그 끝 그
</class> </classes>
그것은 저에게 효과가 있었습니다.저는 모든 콘센트가 연결된 새로운 레이아웃을 얻었고, 그것만으로도 몇 시간을 절약할 수 있었습니다.
스택 오버플로에 대한 많은 스레드를 읽어본 결과 솔루션은 다음과 같습니다.
1. iPhone-Storyboard를 복제하고 MainStoryboard_iPad.storyboard로 이름을 변경합니다.
2. 스토리보드에서 마우스 오른쪽 버튼을 클릭합니다. -> "이름 지어 열기" -> "소스 코드"
3. 대상 Runtime="iOS"를 검색합니다."CocoaTouch"를 선택한 후 대상 Runtime="iOS"로 변경합니다.코코아 터치.iPad"
5. <simulatedScreenMetrics key="destination" type="retina4"/>
변합다니경으로 .<simulatedScreenMetrics key="destination"/>
4. 이제 모든 것을 저장하고 MainStoryboard_iPad.storyboard "open as" ->를 마우스 오른쪽 버튼으로 클릭합니다.IOS StoryBoard" 5. 제약 조건을 변경해야 할 수도 있습니다.그게 당신이 한 일의 전부입니다.
1. Create New Storyboard file with MainStoryboard_iPad.storyboard
2. Copy All the views from MainStoryboard and paste to MainStoryboard_iPad.storyboard
- 당신의 1을 - 기하작성"MainStoryboard_iPad.storyboard";
2 - 마우스 오른쪽 버튼을 클릭합니다."MainStoryboard_iPhone.storyboard"
및 "-> 소스 코드로 열기"를 선택합니다.것을 복사합니다.
3 - 마우스 오른쪽 버튼을 클릭합니다."MainStoryboard_iPad.storyboard"
및 "-> 소스 코드로 열기"를 선택합니다.모두 붙여넣습니다.이제 검색 및 변경:
targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"
4 - 저장.이제 다시 열지만 인터페이스 작성기를 사용합니다.다시 정렬하기만 하면 됩니다.
이 메서드는 .xib 파일에도 사용할 수 있습니다.
이것은 반대로 진행되고 있지만, 저는 아이패드 스토리보드(~35개 장면)에서 모두 선택하고 복사하여 아이폰 스토리보드에 붙여넣을 수 있었습니다.씬(scene) 크기가 자동으로 조정되었습니다.UISplitViewController(iPad뿐이므로)를 교체해야 하는 문제가 두 가지밖에 없었고, 기본 배경이 회색 대신 투명해졌습니다(모든 배경을 수동으로 설정하지 않고 제대로 수정하는 작업).
편집: 특성 검사기의 UITableView에 대한 기본 배경이 다소 이상한 것 같습니다.그룹화된 테이블 보기의 경우 배경을 "그룹화된 테이블 보기 배경색"으로 수동 설정하고 그룹화되지 않은 테이블 보기의 경우 "화이트 색상"으로 설정해야 했습니다.그런 다음 "기본값"으로 표시됩니다(하드코딩된 값과 일치했기 때문인 것 같습니다).사실, "그룹화"에서 "정적"으로 변경하고 다시 되돌리는 것이 기본 색상을 재설정하는 것처럼 보입니다.
여기 몇 시간을 절약하고 파이썬 기술을 사용하는 사람들에게 도움이 될 수 있는 것이 있습니다.
저는 지난 두 달 동안 팀과 UX를 반복하는 아이패드에 초점을 맞춰 앱을 구축해 왔습니다.
오늘은 iPhone 버전 구축에 중점을 두고 위의 단계를 따릅니다(감사합니다!). 하지만 시각적 스토리보드 편집기에서 아이패드 차원의 모든 UI 요소의 크기를 조정할 필요가 없었습니다.
그래서 저는 이 작은 파이썬 지그 스크립트를 써서 스토리보드 파일에서 x, y, 너비, 높이를 스캔하고 모든 것을 320./768 비율로 축소했습니다.그러면 미세 조정에만 집중할 수 있게 해주었습니다.
iPad 스토리보드를 새 파일로 복사합니다.(예: iPhone 스토리보드, 스토리보드)
복사된 스토리보드 파일 이름을 첫 번째 매개 변수로 사용하여 아래 스크립트를 실행합니다.
접미사 _adjusted로 출력 파일을 생성합니다.스토리보드(예: iPhone Storyboard.storyboard_조정됨).스토리보드)
도움이 되길...
import re
import sys
import math
afile = sys.argv[1]
scale = 320./768.
number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'
def replacescaledvalue(scale,pattern,sometext,replacefmt) :
ip = re.search(pattern, sometext, re.IGNORECASE)
if(ip) :
np = re.search(number_pattern,ip.group(0))
if(np) :
val = float(np.group(0))
val = int(math.floor(val*scale))
sval = replacefmt+str(val)+'"'#+'px"'
newtext = re.sub(pattern,sval,sometext)
return newtext
else :
return sometext
fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
newline = line
newline = replacescaledvalue(scale,width_pattern,newline,'width="')
newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
# print newline
fout.write( newline )
fin.close()
fout.close()
Xcode10의 경우
복제 ㅠㅠ
Main.storyboard
그런 다음 파일 이름을 변경합니다.
Main_iPad.storyboard
그리고.Main_iPone.storyboard
적한이설에서 적절한 합니다.
.plist
4.구성할 적절한 .storyboard를 선택하기만 하면 됩니다.
대상 요약으로 이동하여 장치를 범용으로 변경한 다음, ipad 버전을 원하는 스토리보드로 설정합니다.
이 문제로 제 문제를 일으켰을 수도 있는 사람들에게 재빨리 메모를 받았습니다.
내 문제:
스토리보드 내용이 제가 추가한 새 보드 파일로 잘 복사되었습니다.그러나 프로비저닝된 iPad에 변경 사항을 적용하지는 않습니다.빌드 대상에 대해 지정된 스토리보드를 전환해야 한다는 것을 알게 되면(이미지 참조) 변경 사항이 표시됩니다.
포인트가 있으면 이미지를 게시하고 싶지만 설정 위치는 다음과 같습니다.
왼쪽 소스 메뉴의 프로젝트 탐색기, 프로젝트의 루트 대상(가운데 창) 일반 탭, (두 번째 부제목) 배포 정보, iPad 버튼 탭이 선택되어 있습니다.
여기서 "메인 인터페이스"에서 스토리보드를 선택합니다.
게시물 감사합니다, 이 언급이 어딘가에 걸림돌이 되길 바랍니다.
XCode 5.1과 iOS 7.1에서 "toolVersion"과 "systemVersion"의 값을 다음과 같이 변경해야 했습니다.
toolsVersion="5023" systemVersion="13A603"
이것이 없으면 새 스토리보드 파일이 컴파일되지 않습니다.
XCode6 크기 클래스를 사용하면 더 이상 스토리보드를 iPad로 변환할 필요가 없습니다.동일한 스토리보드를 iPhone과 iPad 모두에 사용할 수 있으므로 두 개의 파일을 최신 상태로 유지할 수 없습니다.
결과 스토리보드는 iOS7+와 호환됩니다.
자세한 내용은 여기에서 확인하십시오. https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html #//apple_ref/doc/uid/TP40014436-CH6-SW1
크기 클래스를 사용하여 스토리보드 또는 xib 파일이 사용 가능한 모든 화면 크기에서 작동할 수 있도록 합니다.이렇게 하면 앱의 사용자 인터페이스가 모든 iOS 기기에서 작동할 수 있습니다.
이 기능은 이제 기본 제공됩니다.예를 들어, 배포 정보 -> 장치의 프로젝트 설정을 iPhone에서 범용으로 변경하면 다음 대화 상자가 나타납니다.
크기 클래스를 지원하는 Xcode 버전에 대한 매우 간단한 솔루션이 있습니다(작성 당시 현재 버전인 Xcode 7에서 테스트됨).스토리보드 파일(파일 검사기)에서 "크기 클래스 사용" 확인란을 선택하고 대화상자가 나타나는지 확인합니다.그런 다음 동일한 확인란의 선택을 취소합니다. Xcode는 iPhone 또는 iPad와 함께 이 스토리보드를 사용할지 묻는 메시지를 표시하고 화면을 적절하게 변환합니다.스토리보드 파일을 직접 편집할 필요가 없습니다.iPad와 iPhone 모두 동일한 스토리보드를 복사하여 설명된 방법으로 iPad용과 iPhone용으로 각각 하나씩 구성합니다.
그리고 누군가 크기 클래스를 사용하라고 제안하기 전에 - 훌륭하지만 게임 등과 같이 고도로 사용자 지정된 UI에는 덜 편리합니다.
나는 어제 같은 문제로 타격을 받았을 때 이 스레드를 따라갔습니다.내가 따라한 단계들
- Xcode 5.1의 경우 iPhone 스토리보드를 정리해야 했습니다. 예를 들어 테이블 셀의 reuseIdentifiers 누락, 모든 컨트롤러에 스토리보드 ID 제공, 사용하지 않는 장면 제거 등입니다.
- MainStoryboard_iPhone.storyboard를 MainStoryboard_iPad.storyboard에 복사합니다.
- editor - 변경된 vi 기집사용 - 변됨경편
targetRuntime="iOS.CocoaTouch"
targetRuntime="iOS.CocoaTouch.iPad"
- MainStoryboard_iPad.storyboard의 코드를 다음에서 변경합니다.
<simulatedScreenMetrics key="destination" type="retina4"/>
<simulatedScreenMetrics key="destination"/>
- Xcode로 프로젝트를 엽니다.
- 배포 장치를 범용으로 변경 - iPhone 스토리보드를 복사하지 않음 옵션을 선택합니다.
- Xcode는 배포 대상을 기본값으로 7.1로 설정하고 사용되지 않는 기능을 처리합니다.
- iPad 스토리보드에서 잘못 배치된 보기 오류를 수정하려면 - 오류가 발생하는 컨트롤러의 프레임 레이아웃을 변경합니다.
그게 다였어요..당신의 도움에 모두 감사합니다.
가장 쉽고 안정적인 방법은 iPad 스토리보드에서 붙여넣기를 복사하는 것입니다.
- 새 스토리보드를 만들고 MainStoryboard_ipad와 같은 이름을 붙입니다.
- 프로젝트의 대상 속성 요약 페이지에서 장치 속성을 범용으로 설정하여 앱을 범용 앱으로 만듭니다.
- iPhone 스토리보드를 열고 모두 선택하여 복사
- iPad 스토리보드를 열고 붙여넣습니다.
크기를 조정해야 하지만 전체 스토리보드를 다시 만드는 것보다 더 빠를 수 있습니다.
다른 접근 방식
iPad 스토리보드에 탐색 컨트롤러가 있는 빈 보기 컨트롤러 추가
클래스를 iPhone에 사용된 첫 번째 ViewController의 클래스인 "fooViewController"로 변경합니다.
첫 번째 ViewController에 대한 iPhone-Storyboard "fooViewController_storyboard_identifier"에 Storyboard-Identifier를 추가합니다.
"fooViewController"로 이동합니다.m"
부울 추가 변수 쿨
nibWasLoadForIpad=false
에 가다
viewDidLoad
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && !nibWasLoadForIpad) { nibWasLoadForIpad=true; UIStoryboard* Storyboard_iphone=[UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil]; fooViewController *controller = [Storyboard_iphone instantiateViewControllerWithIdentifier:@"fooViewController_storyboard_identifier"]; [self.navigationController pushViewController:controller animated:YES]; self.modalPresentationStyle = UIModalPresentationCurrentContext; }
(ps. 보기 배경이 흰색으로 설정된다는 것을 아는 문제)
저는 그냥 변경합니다(@tarkay의 답변에 추가).
<device id="ipad9_7" orientation="landscape">
그리고 잘 작동합니다!
XCode 8.3.3에서 사용합니다.
당신은 Apple로 버그 보고서를 만들어야 합니다.2011년 9월부터 오픈된 제(10167030)의 복제품이라고 보시면 됩니다.제가 보기에 답답한 점은 Xcode 3에 해당 기능이 존재했다는 것입니다.
모두 답변 감사합니다.
저는 위의 단계를 따랐지만 시뮬레이터나 아이패드 아래에서 앱을 실행하면 아이폰 스토리보드만 사용합니다.
어떤 이유에서인지 대상 장치를 iPhone 대신 Universal로 변경했을 때 Xcode(v5.0)가 iPad 스토리보드를 포함하도록 app-Info.plist 파일을 업데이트하지 않았기 때문에 다음 항목을 수동으로 추가해야 했습니다(Xcode의 plist 편집기 사용).
메인 스토리보드 파일 베이스명 (iPad) ==> 메인 스토리보드_iPad
언급URL : https://stackoverflow.com/questions/8465769/converting-storyboard-from-iphone-to-ipad
'programing' 카테고리의 다른 글
하위 모듈을 포함하여 repo를 "git cloning"하려면 어떻게 해야 합니까? (0) | 2023.05.27 |
---|---|
XAML에 유니코드 문자를 넣는 방법은 무엇입니까? (0) | 2023.05.27 |
MongoDB 3.2 인증 실패 (0) | 2023.05.27 |
Bash 셸에서 ${var}, "$var" 및 "${var}"의 차이점은 무엇입니까? (0) | 2023.05.27 |
Node.js로 현재 운영 체제를 확인하는 방법 (0) | 2023.05.27 |