새로운 iPhone 5 디스플레이에는 새로운 종횡비와 새로운 해상도 (640 x 1136 픽셀)가 있습니다.
새로운 응용 프로그램을 개발하거나 기존 응용 프로그램을 새로운 화면 크기로 전환하려면 무엇이 필요합니까?
구형 디스플레이와 새로운 와이드 스크린 종횡비 모두에 응용 프로그램을 “보편적”으로 만들려면 무엇을 명심해야합니까?
답변
- 최신 버전의 Xcode를 다운로드하여 설치하십시오 .
- 대상 설정의 일반 탭에서 앱의 시작 화면 파일을 설정하십시오. iOS 9의 iPad 분할보기 크기를 포함하여 모든 화면의 전체 크기를 사용하는 방법입니다.
- 자동 크기 조정 마스크를 올바르게 설정하거나 자동 레이아웃을 사용하면 모든 것이 마술처럼 작동하기 때문에 앱을 테스트하고 다른 작업을 수행하지 마십시오.
- 그렇지 않은 경우 자동 레이아웃을 사용하여보기 레이아웃을 조정하십시오.
- 더 큰 화면을 위해 특별히해야 할 일이 있다면
[[UIScreen mainScreen] bounds]
특정 API가없는 것처럼 높이를 확인 해야하는 것처럼 보입니다. iOS 8부터는 화면 크기를 수직 또는 수평으로 추상화하거나 UI를 조정하는 것이 권장되는 크기 클래스가 있습니다.
답변
iPhone 4S 이하용으로 제작 된 앱이 있다면 iPhone 5에서 레터 박스로 실행됩니다.
더 큰 화면에 앱을 적용하려면 먼저 시작 이미지를 Default-568h@2x.png로 변경해야합니다. 크기는 1136×640 (HxW)이어야합니다. 그러나 새로운 화면 크기의 기본 이미지를 갖는 것이 앱이 새로운 iPhone 5의 화면 전체를 차지하게하는 열쇠 입니다.
이름 지정 규칙은 기본 이미지에만 적용됩니다. 다른 이미지의 이름을 “Image-568h@2x.png”로 지정하면 “Image@2x.png”대신로드되지 않습니다. 다른 이미지를로드해야하는 경우 화면 크기가 다른 경우 프로그래밍 방식으로 수행해야합니다.)
매우 운이 좋으면 그럴 수도 있지만, 아마도 몇 가지 단계를 더 거쳐야 할 것입니다.
- Xibs / View가 자동 레이아웃을 사용하여 크기를 조정하십시오.
- 스프링과 스트럿을 사용하여 뷰 크기를 조정하십시오.
- 이것이 앱에 충분하지 않은 경우 특정 화면 크기에 맞게 xib / 스토리 보드를 디자인하고 다른 화면 크기에 맞게 프로그래밍 방식으로 재배치하십시오.
극단적 인 경우 (위의 어느 것도 충분하지 않은 경우), 두 Xibs를 설계하고 뷰 컨트롤러에 적절한 Xibs를로드하십시오.
화면 크기를 감지하려면
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
// iPhone Classic
}
if(result.height == 568)
{
// iPhone 5
}
}
답변
실제로 필요한 것은 앱 리소스에 “Default-568h@2x.png”라는 시작 이미지를 추가하는 것입니다. 일반적으로 운이 좋으면 앱이 올바르게 작동합니다.
앱이 터치 이벤트를 처리하지 않는 경우 키 창의 크기가 올바른지 확인하십시오. 해결 방법은 올바른 프레임을 설정하는 것입니다.
[window setFrame:[[UIScreen mainScreen] bounds]]
iOS 6으로 마이그레이션 할 때 화면 크기와 관련이없는 다른 문제가 있습니다 . 자세한 내용은 iOS 6.0 릴리스 정보 를 읽으십시오 .
답변
때로는 (사전 스토리 보드 응용 프로그램의 경우) 레이아웃이 충분히 다른 경우 장치에 따라 다른 xib를 지정하는 것이 좋습니다 ( 이 질문 참조 -iPhone 5를 처리하기 위해 코드를 수정해야합니다). 다른 크기의 그래픽이 필요한 경우 자동 크기 조정 마스크를 사용하는 twiddling이 작동하지 않으므로 init.
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
NSString *myNibName;
if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
else myNibName = @"MyNib";
if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {
...
이전 iOS 버전을 대상으로하는 앱에 유용합니다.
답변
여기서 훌륭한 자습서를 찾을 수 있습니다 (MonoTouch의 경우 비 MonoTouch 프로젝트에 대한 정보도 사용할 수 있음).
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6- 오늘 /
-
이름이 ” Default-568h@2x.png “인 스플래시 / 기본 화면 ( 640 x 1136 픽셀 ) 의 새 이미지를 만듭니다.
-
에서 iOS 시뮬레이터 “> 장치 메뉴를 선택 – 하드웨어로 이동 아이폰 (망막 4 인치) “
-
배경 이미지와 같은 다른 이미지 만들기
- iPhone 5를 감지하여 새 이미지를로드하십시오.
public static bool IsTall
{
get {
return UIDevice.currentDevice.userInterfaceIdiom
== UIUserInterfaceIdiomPhone
&& UIScreen.mainScreen.bounds.size.height
* UIScreen.mainScreen.scale >= 1136;
}
}
private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
//adopt the -568h@2x naming convention
if(IsTall())
{
var imagePath = Path.GetDirectoryName(path.ToString());
var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
var imageExt = Path.GetExtension(path.ToString());
imageFile = imageFile + tallMagic + imageExt;
return UIImage.FromFile(Path.Combine(imagePath,imageFile));
}
else
{
return UIImage.FromBundle(path.ToString());
}
}
답변
XIB를 통해 iPhone5 및 iPhone4를 쉽게 마이그레이션 할 수 있습니다 ………
UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];
}
else
{
UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}