iOSの美しい背景テクスチャ

友だち

今日は、プログラマーの観点からiOsアプリケーションで美しいバックグラウンドを作成し、その許可、さまざまなAppleデバイスの詳細、および落とし穴を回避することに焦点を当てます。 これの多くは、ほとんどのiO開発者にとって明らかなように思えますが、一部の人にとっては直接作業の指示になれば嬉しいです。



したがって、次の質問に答える必要があります。

  1. 写真に選択する権限。
  2. 写真に名前を付ける方法。
  3. 使い方。




写真に選択する権限



iPad、iPhone、iPod、ユニバーサルアプリケーションのいずれを作成する場合でも、両方のデバイスの向きがサポートされるか、どちらか一方のみであるかは関係ありません。 これを行うには、まず、画像のスケーリングを回避する必要があります。さらに、パフォーマンスにもプラスの影響を与えますが、これも良好です。 したがって、ウィンドウの作業領域の正確な寸法(背景画像のサイズ)を計算する必要があります。



ソースデータ

IOデバイスの権限:





要素の高さ:







ここで、必要に応じて、コントロールが「食べ尽くす」ポイントの数を画面の高さから差し引いて、背景の画像のサイズを取得し、両方の向きを考慮します。



たとえば、ステータスバーとナビゲーションバーがあり、タブバーがない場合、次のようになります。



縦向き:





横向き:





写真に名前を付ける方法



Appleのドキュメントによると、リソースに対応するサフィックスを持つファイルが含まれている場合、環境自体が目的のデバイスに必要な解像度(RetinaまたはRetinaの場合)の画像を選択します。 Retinaスクリーンの場合は「@ 2x」、iPhoneの場合は「〜iphone」、iPadの場合は「〜ipad」です。 注意! 接尾辞は大文字と小文字が区別されます。



さらに、名前の向き(ポートレートの接尾辞なしで、ランドスケープの接尾辞「l」を使用することをお勧めします)とiPhone 5の画像のサイズの増加(多くの場合、接尾辞「-568h」を使用すること)を考慮する必要があります。 これらの接尾辞はシステムによって自動的に処理されないため、手動で処理する必要があります。



したがって、リソースに追加する必要があるファイル名のリストを取得します。





横向き:





使い方



そのため、必要なアクセス許可の写真が作成されました。次に、必要に応じて機能するようにします。

まず、目的のテクスチャを選択する関数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を指定して、この背景にあるオブジェクトをラスタライズすることをお勧めします。



それだけです。最初に設定したタスクに対処しました。



ご清聴ありがとうございました。



All Articles