iPhone
스토리 보드 가있는 응용 프로그램이 있습니다. 이제 iPad
응용 프로그램도 제공하고 싶습니다 . 그래서 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 파일과 동일하지만 모든 내용이 다를 수 있습니다.
이것은 시간을 절약 해 주었기를 바랍니다.
start a bounty
질문에서, 원하는 금액을 선택하고 Reward existing answer
...
<simulatedScreenMetrics key="destination" type="retina4"/>
에<simulatedScreenMetrics key="destination"/>
범용 프로젝트를 생성 한 경우 기본적으로 빈 iPad 스토리 보드가 생성 된 경우 iPhone 스토리 보드를 모두 선택 (Command + A)하고 복사 (Command + C) 한 다음 iPad 스토리 보드에 붙여 넣기 만하면됩니다. 컴파일하기 전에 진입 점을 빈 스토리 보드에서 새로 복사 한 스토리 보드로 이동하십시오.
그것은 저에게 효과적이지 않았습니다. 나는 조금 다른 것을했다.
<scenes> <!--Contents View Controller-->
</class> </classes>
그것은 나를 위해 일했다. 모든 콘센트가 연결된 새로운 레이아웃 아웃을 얻었으므로 혼자서 몇 시간을 절약했습니다.
.storyboard
파일을 마우스 오른쪽 버튼으로 클릭 하고 클릭 Open As > Source Code
하여 원시 XML을 봅니다.
stackoverflow에서 많은 스레드를 읽음으로써 해결책이 발견되었습니다.
1. iPhone-Storyboard를 복제하고 이름을 MainStoryboard_iPad.storyboard로 바꿉니다.
2. 스토리 보드를 마우스 오른쪽 버튼으로 클릭-> "다른 이름으로 열기"-> "소스 코드".
3. targetRuntime = "iOS.CocoaTouch"를 검색하고 targetRuntime = "iOS.CocoaTouch.iPad"로 변경하십시오.
5.로 검색 <simulatedScreenMetrics key="destination" type="retina4"/>
하여 변경<simulatedScreenMetrics key="destination"/>
4. 이제 모든 것을 저장하고 MainStoryboard_iPad.storyboard“Open as”-> "IOS StoryBoard"를 마우스 오른쪽 버튼으로 클릭하십시오. 5. 제약 조건을 변경해야 할 수도 있습니다. 그게 다야
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 파일에도 사용할 수 있습니다
이것은 다른 방식으로 진행되지만 iPad 스토리 보드 (~ 35 장면)에서 모두 선택 및 복사를 수행하여 iPhone 스토리 보드에 붙여 넣을 수있었습니다. 장면 크기가 자동으로 조정되었습니다. UISplitViewController를 교체 해야하는 두 가지 문제 만 보았습니다 (iPad 만 있기 때문에) 기본 배경은 회색 대신 투명하게되었습니다 (여전히 모든 배경을 수동으로 설정하지 않고 올바르게 수정하는 작업).
편집 : 속성 관리자에서 UITableView의 기본 배경이 다소 이상해 보입니다. 그룹화 된 테이블보기의 경우 배경을 "그룹 테이블보기 배경색"으로, 그룹화되지 않은 테이블보기의 경우 "흰색"으로 수동으로 배경을 설정해야했습니다. 그런 다음 "Default"로 표시되었습니다 (하드 코딩 된 값과 일치하므로 가정합니다). -실제로 "그룹화"에서 "정적"으로 변경 한 후 다시 기본 색상을 재설정하는 것이 훨씬 더 쉽습니다.
시간을 절약하고 파이썬 기술을 가진 사람들을 도울 수있는 것이 있습니다.
지난 2 개월 동안 팀과 함께 UX를 반복하는 iPad에 중점을 둔 앱을 개발했습니다.
오늘은 iPhone 버전을 만드는 데 중점을 두었고 위의 단계를 수행했습니다 (감사합니다!).하지만 비주얼 스토리 보드 편집기에서 iPad 크기의 모든 UI 요소 크기를 조정하고 싶지는 않았습니다.
그래서이 작은 파이썬 지그 스크립트를 작성하여 스토리 보드 파일을 통해 x, y, 너비, 높이를 스캔하고 비율을 320./768로 축소합니다. 그런 다음 미세 조정에만 집중할 수있었습니다.
iPad 스토리 보드를 새 파일로 복사하십시오. (예 : iPhoneStoryboard.storyboard)
복사 된 스토리 보드 파일 이름을 첫 번째 매개 변수로 사용하여 아래 스크립트를 실행하십시오.
접미사가 _adjusted.storyboard 인 출력 파일을 생성합니다 (예 : iPhoneStoryboard.storyboard_adjusted.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()
이 문제에 대해 내 문제가 있었던 사람들에게 간단히 알려주십시오.
내 문제 :
스토리 보드 내용은 내가 추가 한 새로운 보드 파일로 멋지게 복사되었습니다. 그러나 프로비저닝 된 iPad에는 변경 사항이 적용되지 않습니다. 빌드 대상 (이미지 참조)에 대해 지정된 스토리 보드를 전환해야한다는 사실에 주목하면 변경 사항이 표시됩니다.
포인트가 있으면 이미지를 게시하지만 설정은 다음 위치에 있습니다.
왼쪽 소스 메뉴의 프로젝트 탐색기, iPad 버튼 탭이 선택된 프로젝트 (중앙 창) 일반 탭의 루트 대상 (제 2 부제목) 배치 정보.
거기에서 "메인 인터페이스"아래에서 스토리 보드를 선택하십시오.
게시물에 감사드립니다.이 언급이 어딘가에 걸리는 데 도움이되기를 바랍니다.
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 기기에서 작동 할 수 있습니다.
어제 같은 문제가 발생했을 때이 실을 따랐습니다. 내가 따르는 단계
targetRuntime="iOS.CocoaTouch"
에targetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
에서<simulatedScreenMetrics key="destination"/>
그게 다야 .. 도와 줘서 고마워 ..
크기 클래스를 지원하는 Xcode 버전에 대한 간단한 솔루션이 있습니다 (작성 당시의 현재 버전 인 Xcode 7에서 테스트 됨). 확인 "사용 크기 클래스" 스토리 보드 파일에 체크 박스를 ( 파일 관리자 ), 확인하는 대화 상자가 나타납니다. 그런 다음 동일한 확인란을 선택 취소하십시오 -Xcode는이 스토리 보드를 iPhone 또는 iPad와 함께 사용할 것인지 묻고 화면을 적절히 변환합니다. 스토리 보드 파일을 직접 편집 할 필요가 없습니다 . iPad와 iPhone 모두 동일한 스토리 보드를 복사하고 설명 된 방법을 사용하여 iPad 용과 iPhone 용으로 하나씩 구성하십시오.
그리고 누군가가 크기 클래스 사용을 제안하기 전에-훌륭하지만 게임 등과 같이 많이 사용자 정의 된 UI에는 덜 편리합니다.
iPad-Storyboard에서 Navigation-Controller가있는 빈 뷰 컨트롤러 추가
클래스를 iPhone에 사용 된 첫 번째 ViewController의 "fooViewController"클래스로 변경하십시오.
첫 번째 ViewController의 iPhone-Storyboard "fooViewController_storyboard_identifier"에 Storyboard-Identifier를 추가하십시오.
"fooViewController.m"으로 이동
부울 변수 추가 부울 nibWasLoadForIpad=false
이동 viewDidLoad
-Method
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. 문제는보기 배경이 흰색으로 설정된다는 것입니다.)