1

Windows Phone で使用できる Metro スタイル タイルと非常によく似た動作と感触のボタン セットを作成したいと考えています。ユーザーがそれらをタップして、基本的な機能にアクセスできるようにしたいと思います(モーダルまたは何かまたはその並べ替えを開きます)。

  1. UIButton をサブクラス化してもそこにたどり着けないのではないかと心配しています。タイル自体の内側に直角の角と動的なコンテンツが必要です。SO の周りで見つけた投稿は、UIButton をサブクラス化することはいくつかの理由で良い考えではなく、代わりに UIView を使用する必要があることを示唆しているようです。その回答は 2010 年のものであり、それから 2 年以上の間に、その効果を達成する方法にかなりの変化があったかどうかはわかりません。最近のほとんどのユーザーは、すぐに 6.0 ではないにしても、iOS 5.1+ を持っているでしょう。

  2. 私がUIViewルートに行くとしましょう。UIResponder のタッチ イベントを実装する必要がありますか、それとも代わりに UITapGestureRecognizer ルートに進む必要がありますか? 2012 年のベストプラクティスは何ですか?

ありがとうございました!

4

3 に答える 3

2

UIControlの代わりにからサブクラス化することをお勧めしUIButtonます。コンテンツが変更されたときのアニメーションの反転など、いくつかのビデオでこれらのウィンドウ タイルがどのように表示され、機能するかを見てきました。その機能をTileクラスまたは同様のものにパッケージ化する方が、変更された UIButton をどこにでも持ち運ばなければならないよりも簡単です。作成する必要があるそのようなインスタンスごとに。

from をサブクラス化しないことを提案している理由UIButtonは、1 つの画像と 1 つのラベルをサポートするためです。すべてのタイルに複数の画像とラベルがあるように見えるので、独自のサブビューの管理を開始する必要があります。で取得した 1 つのラベルと画像を回避する代わりに、 でゼロから開始してタイルを作成するUIButton方がクリーンです。UIControl

于 2012-09-18T03:27:29.993 に答える
0

通常のボタンのように動作する正方形のメトロ スタイルのボタン (押すと何かが起こる) が必要な場合は、サブクラス化せずにカスタム ボタンを使用して、標準の UIButton クラスからすべての機能を取得できます。

コードの簡単な例を次に示しますが、これは IB でも実現できます。tile1.png という画像があるとします。

//set the image
UIImage *image = [UIImage imageNamed:@"tile1.jpg"];

//create the button
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

//add the image
[button setImage:image forState:UIControlStateNormal];

//define the action
[button addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];

フレーム サイズを変更する必要がある場合は、button.frame を介して変更できます。他の多くのボタン プロパティを変更することもできます。

あなたはそれをすべて知っていて、何か他のものを探していましたか、それとも役に立ちましたか? よくなって

于 2012-09-18T02:59:40.793 に答える
0

ユース ケースは、Storyboard / Interface Builder 内でカスタムの外観のボタンを使用することです。サブクラスを使用すると、Interface Builder からこのカスタムの外観のボタンを直接使用できます。

于 2016-01-31T11:13:18.900 に答える