2009-07-11 3 views
1

iPhone向けのプログラミングには初めてのことですが、私は疑問に思っています。ボタンを例にしましょう:Cocoa Touch Controlsの拡張性に関する質問

  • 私は背景のグラフィックを変更できますか?
  • 私はそれを押すと大きくなることがありますか?
  • フォントを変更できますか?
  • 私はカスタムフォントを使用できますか?
  • テキストの代わりにボタングラフィックを使用できますか?

答えて

2

一般的に、すべての質問にはいります。他のクラスと同様に、Cocoaタッチコントロールを構成するさまざまなUI *クラスをサブクラス化し、独自のカスタム機能を適切なメソッドに追加できます。唯一の難しい部分は、コードがどこに行くべきかを考え出すことです。

あなたのUIButtonの例を見て、それを使って何をしたいのかを見てみましょう。

背景画像

UIButtonクラスは、すでにそれはように、このような通常、強調表示、身体障害者としていくつかの州の一つでだ、としたときにUIImageボタンが表示さを変更することができます方法setBackgroundImage:forState:を持っています。例えば

、画像を変更するには、画像アプリケーションのバンドル内のファイルであり、通常の背景に「backgroundImage.png」などのボタンが表示されます。成長

//Presuming you have some UIButton *button: 
UIImage *bgImage = [UIImage imageNamed:@"backgroundImage.png"]; 
[button setBackgroundImage:bgImage forState:UIControlStateNormal];

大きな

ボタンを管理するView Controller .mファイルでボタンのframe(UIViewから継承されたプロパティ)を変更し、そのメソッドをボタンのコントロールイベントのアクションとして追加することにより、ボタンのframeを変更できます。

ボタンのサイズを2倍にしたいとします。 viewDidLoad:またはどこか似てでは、次のコードを追加します。

[button addTarget:self action:@selector(growButton) 
      forControlEvents:UIControlEventTouchDown];

そして、次のコードでメソッドgrowButtonを作成:

- (void)growButton { 
    CGRect currentFrame = button.frame; 
    CGRect newFrame = CGRectMake(currentFrame.origin.x - currentFrame.size.width/2, 
           currentFrame.origin.y - currentFrame.size.height/2, 
           currentFrame.size.width * 2, 
           currentFrame.size.height * 2); 
    button.frame = newFrame; 
}

同じ中心を維持しながら、これはあなたのボタンのサイズを倍になります。 (あなたのボタンは、あなたがこれを行うあなたの視野の端に成長しないように注意してください。)

は単にUIButtonのfontプロパティを変更するフォント

を変更する - の新しいインスタンスに設定しますこの例のようにUIFont、:これはサイズ16で、システムのフォントにボタンのフォントを変更する

button.font = [UIFont systemFontOfSize:16.0];

カスタムフォント私はあなたがあなたのアプリケーションバンドルに含める場合でも、独自のカスタムフォントファイルを読み込むことができないかなり確信しているように、これは、ややトリッキーな質問です。ただし、UIFontのfontWithName:size:クラスメソッドを使用して、コントロールの既定のフォントを変更できます。すべてのフォント名はUIFontのfamilyNamesfontNamesForFamilyName:の方法で利用できます。代わりに、テキスト

ボタンのグラフィックこれは5の最も簡単です - ちょうど(上記参照)のボタン上のテキストを設定し、代わりにUIControlStateNormalの背景画像を設定しないでください。

+0

私は、例としてのみ、ボタンの質問を意図したものではなく、すごいです!切り替え受付応答。 – RCIX

+1

これはすべてプログラムで実行されます(私はまれに、Interface Builderを使用していますが)。もちろん、これらのことの大半を達成するためにIBを使用することもできます。 – Tim

3

はい。

1,3,4,5は、Interface Builderのボタンの属性を使用して、コードなしで達成できます。フォントを変更するには、ボタンを選択した状態でフォントパネル(Command-T)を表示させます。

ボタンを大きくするには、クリックしたときに実行されるコードを追加する必要があります。あなたのビューコントローラでは、このような数行を置くことができ、それはトリックを行う必要があります。

- (void)buttonClicked:(id)sender 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration: 0.4]; 
    [sender setFrame:CGRectMake(--,--,--,--)]; //replace with slightly bigger button frame 
    [UIView commitAnimations]; 
} 
関連する問題