Xcode 5の隠された機能

こんにちは、Habrahabrの読者の皆さん!



Incoherent Developmentのチームは、実際の収益化なしで新興企業をサポートするHabrahabrの奇跡的なプログラムのおかげで、企業アカウントを取得することができました。 私たちは、 24 時間 と48 時間さまざまな アプリケーション 開発するために放送を手配することが多いです。 今日、私たちは必要な、しかし有料の、または広告にハングアップするプログラムの無料のアナログの作成に向かいました。



ようこそ投稿で「About Nothing」にならないように、本日はiOS 7 Tech Talksで覗かれたXcode 5を使用することの利点についてお話します。 夕方のプログラム:



  1. コード補完:誰もが試したわけではないCookie
  2. 範囲内で編集:ボリュームのあるチョコレートケーキ
  3. IBオブジェクト:このストロベリーゼリー品種に名前を付ける
  4. ダブルステータスバー:チョコレートシェークを冷やす
  5. カラーブレンドレイヤー:ラムクリームを適切に塗布していません
  6. 同時オブジェクト列挙:パウダーコートすべて
  7. ローカライズ:毎回オーブンを温めるのをやめる




コード補完



それで、あなたは5年以上Xcodeと友達であり、あなたはそれについてすべてを知っていると思いますか? しかし、コード補完を初期化するために戻り値の型を登録する必要がないと言えばどうでしょうか? 忘れて:



画像



これで、次のように書くことができます。







範囲内で編集



知的意義を主張しない単純な方法があるとします:







このエラーは、初心者のプログラマーにも見えます。同じ名前の既存の変数のスコープ内に新しい変数番号を作成しました。 もちろん、ペンで名前を変更できます。 怠lazならどうしますか? 時間がない場合はどうなりますか? ただし、Cmd + Fを使用できます! いいえ、いいえ、いいえ。 これで、変数にカーソルを合わせると、その横に小さな三角形が表示されます。







このアイコンをクリックすると、「スコープ内のすべてを編集」が大事になったコンテキストメニューが表示されます。







リアルタイムでの表示は次のとおりです。







また、ホットキーが好きな人のために、別の組み合わせ(Cmd + Control + E)があります。







IBオブジェクト



公務では、他の人のコード、特に他の人のストーリーボードをよく理解しています。 以前の開発者によって組み立てられたいくつかのインターフェースでは、悪魔は彼の足を壊します。 あなたとゲームをプレイしたい:どのUIViewはどこですか?







意外と? しかし、この状況は簡単に修正できます! 結局のところ、すべてのインターフェイス要素を好きなように呼び出すことができます。 良い状態を保ち、将来の開発者について考えてください。 たぶんいつか、あなたに戻ってきます:







デュアルステータスバー



アプリケーションが完璧に機能するとしますか? テストで99.9%がカバーされていますか?また、財団のいくつかの重大なバグを修正しましたか? そして、ユーザーが電話を受けるとどうなりますか? 幸いなことに、確認する簡単な方法があります。 シミュレーターは、電話をかけるときに「拡張」ステータスバーの表示をサポートしています。







着信コールのイベントを正しく処理し、バーのステータスを展開するには、NSNotificationCenterのリッスンを開始できます。



UIApplicationWillChangeStatusBarFrameNotification UIApplicationDidChangeStatusBarFrameNotification
      
      





または、AppDelegateで次のメソッドを実装します。



 - (void)application:(UIApplication *)applicationwillChangeStatusBarFrame:(CGRect)newStatusBarFrame; - (void)application:(UIApplication *)applicationdidChangeStatusBarFrame:(CGRect)oldStatusBarFrame;
      
      





カラーブレンドレイヤー



プログラミングに詳しい人にとっては、透明なオブジェクトを描くことは不透明なオブジェクトを処理するよりも難しいことは明らかです。 少なくとも、デバイスは背景について考え、それを描くのに時間を費やす必要があります。 ただし、多くのプログラマーは、不透明(不透明)プロパティがどのように変換されるかを無視しています。 しない方がいいです



たとえば、プレーンな白いUITableViewを使用して、カラーブレンドレイヤーを有効にします。







シミュレーターは、アクティブなアルファチャネルを持つ要素を赤で、不透明な要素を緑で示します。 残念ながら、プロセッサは現在、透明なテキストの背後に白い背景を描くのに余分な時間を費やしています。 これは非常に簡単に解決されます。Xcodeの2つのアクション-「不透明」ボックスをオンにして、背景を白にします。







後は、すべてが見た目により良く見えます:







アプリケーションでアルファチャンネル付きの画像を使用する場合、「不透明」を選択しても十分ではないことに注意してください。 Xcodeは透明な写真(特に子猫の場合)を尊重し、写真が透明でないことを伝えたとしても(言い換えれば、彼をだます)、彼は名誉のために同じことを行い、写真を透明にします。 画像を不透明にする必要がある場合-何らかのグラフィックエディタで行います。 Xcodeは、画像にアクティブなアルファチャネルがない場合にのみ、画像を不透明として処理できます。



同時オブジェクト列挙



この段落で紹介したいのは、次の2行のコードだけです。



 NSArray *myObjects = ...; [myObjects enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger idx, BOOL *stop) { //  -    }];
      
      







メソッドに渡すプロパティ"NSEnumerationConcurrent"には特に注意する必要があります。 GCDやNSOperationに煩わされることなく、データの配列を操作するときに、マルチスレッドプログラミングのすべての機能を使用できます。



ローカリゼーション



アプリケーションを他の言語に翻訳したことがある場合、シミュレーターでの言語設定の絶え間ない変更に伴うこの痛みに慣れています。 あなたはこの不名誉をただ見ます:







いいえ、それはしません。 しかし、ロケールの1つでマイナーなバグを修正する必要がある場合はどうでしょうか? 前後に切り替えるには時間がかかります。 よりシンプルで、より速く、よりスマートなソリューションがあります! ビルド用にいくつかの異なるスキームを作成して、各スキームに独自の言語を持たせることができます。 メインスキームの設定に移動します。







「スキームの複製」をクリックします。







B 2つのフラグを追加します: 「-AppleLanguages(ru)」「-AppleLocale ru_RU」 (覚えていない場合、 ロケール名はgoogleである必要があります):







これで、シミュレーターの設定に入ることなく、異なる言語でアプリケーションを即座に起動できます。







おわりに



最後まで読んでくれてありがとう!



WWDCや他の会議からのさまざまな興味深いことをハブで広めるために、もっと頻繁に試します。同じ量の情報でTech Talkを聞くのに40分かかるよりも、テキストを読むのに10分かかる方が簡単な場合があります。 ただし、すべてのiOS開発者は、これらの会議から少なくとも2〜3本のビデオを自習のために視聴することを強く主張します。



ちなみに、次の放送はクリスマス(12月25日)になるという噂があり、App Storeから「Heads Up」のような有料アプリケーションの「キラークローン」を作成しようとします。 当然、ロシア語のローカライズ。



ここにいるのは、Incoherent Developmentのチームです。写真、gif、子猫のクラウドです。



PSテキストに間違いやタイプミスを見つけた場合は、必ずhabracenterに書いてください



All Articles