友だち
今日は、プログラマーの観点からiOsアプリケーションで美しいバックグラウンドを作成し、その許可、さまざまなAppleデバイスの詳細、および落とし穴を回避することに焦点を当てます。 これの多くは、ほとんどのiO開発者にとって明らかなように思えますが、一部の人にとっては直接作業の指示になれば嬉しいです。
したがって、次の質問に答える必要があります。
- 写真に選択する権限。
- 写真に名前を付ける方法。
- 使い方。
写真に選択する権限
iPad、iPhone、iPod、ユニバーサルアプリケーションのいずれを作成する場合でも、両方のデバイスの向きがサポートされるか、どちらか一方のみであるかは関係ありません。 これを行うには、まず、画像のスケーリングを回避する必要があります。さらに、パフォーマンスにもプラスの影響を与えますが、これも良好です。 したがって、ウィンドウの作業領域の正確な寸法(背景画像のサイズ)を計算する必要があります。
ソースデータIOデバイスの権限:
- iPhone 320x480
- iPhone(Retina)640x960
- iPhone 5(Retina)640x1136
- iPad 768x1024
- iPad(Retina)1536x2048
要素の高さ:
- ステータスバー20pt(Retinaなしで20px、Retina付きで40px)
- ナビゲーションバー44pt(Retinaなしの44pxおよびRetina付きの88px)
- タブバー49pt(Retinaなしの49pxおよびRetina付きの98px)
ここで、必要に応じて、コントロールが「食べ尽くす」ポイントの数を画面の高さから差し引いて、背景の画像のサイズを取得し、両方の向きを考慮します。
たとえば、ステータスバーとナビゲーションバーがあり、タブバーがない場合、次のようになります。
縦向き:
- iPhone 320x416
- iPhone(Retina)640x832
- iPhone 5(Retina)640x1008
- iPad 768x960
- iPad(網膜)1536x1920
横向き:
- iPhone 480x256
- iPhone(Retina)960x512
- iPhone 5(Retina)1136x512
- iPad 1024x704
- iPad(Retina)2048x1408
写真に名前を付ける方法
Appleのドキュメントによると、リソースに対応するサフィックスを持つファイルが含まれている場合、環境自体が目的のデバイスに必要な解像度(RetinaまたはRetinaの場合)の画像を選択します。 Retinaスクリーンの場合は「@ 2x」、iPhoneの場合は「〜iphone」、iPadの場合は「〜ipad」です。 注意! 接尾辞は大文字と小文字が区別されます。
さらに、名前の向き(ポートレートの接尾辞なしで、ランドスケープの接尾辞「l」を使用することをお勧めします)とiPhone 5の画像のサイズの増加(多くの場合、接尾辞「-568h」を使用すること)を考慮する必要があります。 これらの接尾辞はシステムによって自動的に処理されないため、手動で処理する必要があります。
したがって、リソースに追加する必要があるファイル名のリストを取得します。
- iPhoneの背景〜iphone.png
- iPhone(Retina)background@2x~iphone.png
- iPhone 5(Retina)background-568h@2x~iphone.png
- iPadの背景〜ipad.png
- iPad(Retina)background@2x~ipad.png
横向き:
- iPhone backgroundl〜iphone.png
- iPhone(Retina)backgroundl@2x~iphone.png
- iPhone 5(Retina)backgroundl-568h@2x~iphone.png
- iPad backgroundl〜ipad.png
- iPad(Retina)backgroundl@2x~ipad.png
使い方
そのため、必要なアクセス許可の写真が作成されました。次に、必要に応じて機能するようにします。
まず、目的のテクスチャを選択する関数loadBgImageを作成します。 手動で名前のサフィックスを2つだけ置き換える必要があることを思い出してください。
- (UIImage *) loadBgImageWithLandscapeOrientation: (BOOL) isLandscape { static BOOL isIphone5 = [UIScreen mainScreen].bounds.size.height == 568; NSString * imageName = @"background"; if (isLandscape) { imageName = [imageName stringByAppendingString: @"l"]; } if (isIphone5) { imageName = [imageName stringByAppendingString: @"-568h"]; } return [UIImage imageNamed: imageName]; }
次に、View Controllerに次の関数を追加します。
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willAnimateRotationToInterfaceOrientation: toInterfaceOrientation duration: duration]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:duration]; self.tableView.backgroundView = [[UIImageView alloc] initWithImage: [self loadBgImageWithLandscapeOrientation: UIInterfaceOrientationIsLandscape(toInterfaceOrientation)]]; [UIView commitAnimations]; }
同じイメージブートコードをviewDidLoadに追加すれば完了です!
Core Animationを使用して方向を変更するときに背景を変更するため、すべてが高速であるだけでなく美しいはずです。 さらに、さらに速くするために、view.layer.shouldRasterizeプロパティをYESに設定し、view.layer.rasterizationScaleプロパティで必要なスケールファクター[UIScreen mainScreen] .scaleを指定して、この背景にあるオブジェクトをラスタライズすることをお勧めします。
それだけです。最初に設定したタスクに対処しました。
ご清聴ありがとうございました。