iPhone 앱을 Universal로 해 iPad 대응했을 때에 대응한 7개의 일
1. Devices를 Universal로 설정
2. iPad용 아이콘 준비
3. iPad용 스크린샷 준비
필수 스크린샷 크기는 스크린샷 사양에 설명되어 있습니다.
4. 가로 화면 대응을 검토한다
iPad에서는 가로 화면 대응을 할 필요가 있습니다. 회피 방법도 있으므로, 대응을 검토해 대응합니다.
자세한 것은 iPad에서 Device Orientation을 Portrait 전용으로 만드는 방법에 기재했습니다.
5. actionSheet의 대응
UIAlertController
의 actionSheet
를 사용하는 경우 iPad용 구현이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alert.popoverPresentationController?.sourceView = view
alert.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width - 5, y: 90, width: 0, height: 0)
alert.popoverPresentationController?.permittedArrowDirections = .up
BarButtonItem
를 사용하는 경우 sourceRect
대신 barButtonItem
를 설정합니다.
자세한 것은 UIAlertController를 iPad에서 사용할 때의 주의점 에 정리되어 있습니다.
6. UIActivityViewController 대응
UIActivityViewController
를 사용하는 경우에도 actionSheet
와 같은 대응이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let activityVC = UIActivityViewController(activityItems: [], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = view
activityVC.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width / 2, y: view.bounds.height / 2, width: 0, height: 0)
7. UICollectionView 대응
UICollectionViewCell
의 사이즈를 화면 사이즈로 결정하는 실장을 하고 있었으므로 대응이 필요했습니다.
ViewController viewWillTransition
메서드가 화면 방향 변경을 감지할 수 있으므로 이 메서드를 oberide 하여 필요한 작업을 수행합니다.
예를 들면 이런 느낌입니다.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
updateCollectionViewLayout(fullWidth: size.width)
collectionView.reloadData()
}
private func updateCollectionViewLayout(fullWidth: CGFloat) {
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let space = layoutHelper.space
flowLayout.minimumInteritemSpacing = space
flowLayout.minimumLineSpacing = space
flowLayout.itemSize = layoutHelper.getPhotoCellSize(fullWidth: fullWidth)
}
}
기타 참고로 한 페이지
3. iPad용 스크린샷 준비
필수 스크린샷 크기는 스크린샷 사양에 설명되어 있습니다.
4. 가로 화면 대응을 검토한다
iPad에서는 가로 화면 대응을 할 필요가 있습니다. 회피 방법도 있으므로, 대응을 검토해 대응합니다.
자세한 것은 iPad에서 Device Orientation을 Portrait 전용으로 만드는 방법에 기재했습니다.
5. actionSheet의 대응
UIAlertController
의 actionSheet
를 사용하는 경우 iPad용 구현이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alert.popoverPresentationController?.sourceView = view
alert.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width - 5, y: 90, width: 0, height: 0)
alert.popoverPresentationController?.permittedArrowDirections = .up
BarButtonItem
를 사용하는 경우 sourceRect
대신 barButtonItem
를 설정합니다.
자세한 것은 UIAlertController를 iPad에서 사용할 때의 주의점 에 정리되어 있습니다.
6. UIActivityViewController 대응
UIActivityViewController
를 사용하는 경우에도 actionSheet
와 같은 대응이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let activityVC = UIActivityViewController(activityItems: [], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = view
activityVC.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width / 2, y: view.bounds.height / 2, width: 0, height: 0)
7. UICollectionView 대응
UICollectionViewCell
의 사이즈를 화면 사이즈로 결정하는 실장을 하고 있었으므로 대응이 필요했습니다.
ViewController viewWillTransition
메서드가 화면 방향 변경을 감지할 수 있으므로 이 메서드를 oberide 하여 필요한 작업을 수행합니다.
예를 들면 이런 느낌입니다.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
updateCollectionViewLayout(fullWidth: size.width)
collectionView.reloadData()
}
private func updateCollectionViewLayout(fullWidth: CGFloat) {
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let space = layoutHelper.space
flowLayout.minimumInteritemSpacing = space
flowLayout.minimumLineSpacing = space
flowLayout.itemSize = layoutHelper.getPhotoCellSize(fullWidth: fullWidth)
}
}
기타 참고로 한 페이지
iPad에서는 가로 화면 대응을 할 필요가 있습니다. 회피 방법도 있으므로, 대응을 검토해 대응합니다.
자세한 것은 iPad에서 Device Orientation을 Portrait 전용으로 만드는 방법에 기재했습니다.
5. actionSheet의 대응
UIAlertController
의 actionSheet
를 사용하는 경우 iPad용 구현이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alert.popoverPresentationController?.sourceView = view
alert.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width - 5, y: 90, width: 0, height: 0)
alert.popoverPresentationController?.permittedArrowDirections = .up
BarButtonItem
를 사용하는 경우 sourceRect
대신 barButtonItem
를 설정합니다.
자세한 것은 UIAlertController를 iPad에서 사용할 때의 주의점 에 정리되어 있습니다.
6. UIActivityViewController 대응
UIActivityViewController
를 사용하는 경우에도 actionSheet
와 같은 대응이 필요합니다.
제 경우에는 다음과 같은 구현을했습니다.
let activityVC = UIActivityViewController(activityItems: [], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = view
activityVC.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width / 2, y: view.bounds.height / 2, width: 0, height: 0)
7. UICollectionView 대응
UICollectionViewCell
의 사이즈를 화면 사이즈로 결정하는 실장을 하고 있었으므로 대응이 필요했습니다.
ViewController viewWillTransition
메서드가 화면 방향 변경을 감지할 수 있으므로 이 메서드를 oberide 하여 필요한 작업을 수행합니다.
예를 들면 이런 느낌입니다.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
updateCollectionViewLayout(fullWidth: size.width)
collectionView.reloadData()
}
private func updateCollectionViewLayout(fullWidth: CGFloat) {
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let space = layoutHelper.space
flowLayout.minimumInteritemSpacing = space
flowLayout.minimumLineSpacing = space
flowLayout.itemSize = layoutHelper.getPhotoCellSize(fullWidth: fullWidth)
}
}
기타 참고로 한 페이지
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alert.popoverPresentationController?.sourceView = view
alert.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width - 5, y: 90, width: 0, height: 0)
alert.popoverPresentationController?.permittedArrowDirections = .up
UIActivityViewController
를 사용하는 경우에도 actionSheet
와 같은 대응이 필요합니다.제 경우에는 다음과 같은 구현을했습니다.
let activityVC = UIActivityViewController(activityItems: [], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = view
activityVC.popoverPresentationController?.sourceRect = CGRect(x: view.bounds.width / 2, y: view.bounds.height / 2, width: 0, height: 0)
7. UICollectionView 대응
UICollectionViewCell
의 사이즈를 화면 사이즈로 결정하는 실장을 하고 있었으므로 대응이 필요했습니다.
ViewController viewWillTransition
메서드가 화면 방향 변경을 감지할 수 있으므로 이 메서드를 oberide 하여 필요한 작업을 수행합니다.
예를 들면 이런 느낌입니다.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
updateCollectionViewLayout(fullWidth: size.width)
collectionView.reloadData()
}
private func updateCollectionViewLayout(fullWidth: CGFloat) {
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let space = layoutHelper.space
flowLayout.minimumInteritemSpacing = space
flowLayout.minimumLineSpacing = space
flowLayout.itemSize = layoutHelper.getPhotoCellSize(fullWidth: fullWidth)
}
}
기타 참고로 한 페이지
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
updateCollectionViewLayout(fullWidth: size.width)
collectionView.reloadData()
}
private func updateCollectionViewLayout(fullWidth: CGFloat) {
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let space = layoutHelper.space
flowLayout.minimumInteritemSpacing = space
flowLayout.minimumLineSpacing = space
flowLayout.itemSize = layoutHelper.getPhotoCellSize(fullWidth: fullWidth)
}
}
Reference
이 문제에 관하여(iPhone 앱을 Universal로 해 iPad 대응했을 때에 대응한 7개의 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jumperson/items/91af197296dec7ad68f4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)