おそらく、Appleはそのような批判に値しない-真実は、他のすべて、まあ、またはほとんどすべてが最高の状態にある。 iTunesとApple開発者ポータル(近年では、それでもはるかに良くなっている)テクノロジを除外すると、IEでの表示方法ではなく、自分のすることに集中できます。
最初はIBをまったく使用しませんでしたが、他のビジュアルエディターに引き続いてIBは非常に曲がりくねっているように見えました。 私見であるMacromedia Dreamviewer MXでさえ、UIのWYSIWYGエディターと呼ばれる可能性が高くなりました。 しかし、数年が経ち、素晴らしいものが登場しました-Autolayout-これはコードに実装するのは悲惨なほど不便です。 このコードではほとんど運がありません:
UIImageView *iv = [[UIImageView alloc] initWithImage:image]; UIView *renderView = [[UIView alloc] initWithFrame:iv.bounds]; NSInteger completedDistance = renderView.bounds.size.width * percentsCompleted; UIView *progressView = [[UIView alloc] initWithFrame:CGRectMake(completedDistance, 0, renderView.bounds.size.width, renderView.bounds.size.height)]; progressView.backgroundColor = RGB_UICOLOR(255, 255, 255, 0.8); renderView.clipsToBounds = YES; [renderView addSubview:iv]; [renderView addSubview:progressView];
しかし親切なコード
NSMutableArray *constraints = [@[] mutableCopy]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeHeight multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; [self.parentView addConstraints:constraints];
開発者の魂を憂鬱と憂鬱に陥れます。 IBでは、自動レイアウト設定も最初は砂糖ですが、時間が経つにつれてそれに慣れると、ひどいジャムに気付かないようになり、小さな傷に耐えるようになり始めます...制限。 しかし、代替手段はなく、形式は文書化されておらず、サードパーティのツールはありません! これが私の短縮された小さなブラックリストです。
- 少なくとも200%のスケールを指定してください! ビューに小さな要素がたくさんある場合は、マウスを使って顕微鏡ビューで夢中になります。長いリストから選択するのも簡単な作業ではありません。
- 視覚的には、ビューのすべてのプロパティから離れて設定できます(30%の場合)。 Borland Delphiとその魔法のオブジェクトインスペクターを覚えています。このビューでは、ほぼすべてのビューを作成でき、実行時とほとんど同じように見えました。 IBでは、ビューはたわごと、またはピカソの手の抽象的な正方形のセットのように見えます。 ただし、非表示のフラグがあります(すべて、イベントに応じてすべてをプログラムで公開します!)そしてストレッチ(それが何であるかさえわかりません);
- 以前は、テーブルヘッダーとしてビュー(UIView)をロールしていましたが、現在はUITableViewHeaderFooterViewが必要です。 さて、どこで彼女をXibにドラッグしますか? 右、どこからともなく、あなたの手で書いてください! そして、テーブルをUIView-huにスリップすることに決めた場合、気分を害してクラッシュします。
- IBが生成するわかりやすいXMLはありません。 手動で修正または保持することは不可能です。 Android開発者をうらやましく思うことを神は許してください、彼らはかなりくだらないビジュアルエディタを持っていますが、何かが起こったらペンで書いてください-誰も気分を害することはありません!
- ビュークラスを変更した後、その「IB-super」は変更されず、アプリケーションとxCodeの両方のグリッチとクラッシュが発生します。 30分間、多くのサブビューと定数を持つUITableViewCellを作成し、CollectionViewとそれに応じてそのセルが必要であることに突然気付いたとします。 唯一の方法があります-かけがえのないエネルギーの供給を費やすまで、xibを削除し、ゼロから作り直してください。 これは、Appleがアプリケーションのパフォーマンスを保証できる唯一の方法です
- 特にアプリケーションがノートブックまたは電卓でない場合、ストーリーボードの一貫したベストプラクティスはどこにありますか? インドの文化に熱心なインド人や同胞がストーリーボードで独占的に開発したiPadにアプリケーションを移植しようとすると、涙を流して泣きます。 テーブルセルは、ストーリーボード、Xib、およびXibのみで作成することを禁止する必要があります! システムは、ばかから最小限の保護を備えている必要があります。
このすべてだけでなく、最近、お尻に新しい痛みを加えました。
- 以前のすべての転生からの最大のIBインターフェース(ごめんタフトロジー)! 制約は多くの場合、リーディングスペース(明らかに、独自のxibにあるそのような魚)のふりをします。 それが何であるかを理解する唯一の方法は、アシスタントエディタのウィンドウを少し開くことです。
- 同時に、キャンバスは左上にスムーズに移動し始めます!
- iOS 6のリリースから経過した年には、IB自体がすべての不要な構造を論理的整合性に提供するという事実に誰もがすでに慣れており、ここではデフォルトでxibコンパイル中に暗黙的に実行します! したがって、幅のみの導入が何につながるかを予測することは不可能です。 「欠落している制約を追加」コマンドを使用し、昔ながらの方法でタイプセットすることをお勧めします。
Appleの功績として、各くしゃみマウスから制約を取り除くことは可能でしたが、xCode 4で神経衰弱を4回引き起こし、パートナーの友人も心臓発作で亡くなりました。
最近iOSを発見した人たちは、「フィニッシュ!」という合唱で歌います。リンゴとスティーブジョブズのアイコンを信じて信じています。 私は反対します:「彼らはそれを終わらせない!」、彼らは常により多くの重要なことをしなければなりません。 本当に重要な、美しいものですが 、Apple-私たちは毎日IBを扱っています。
別れに、私は興味深い世論調査を提供したいと思います。