Control Fun(2)~SliderとLabel

2010. 08. 13
続いてスライダと連動して値を表示するラベルを設置します。

664

●スライダとラベルの設置

LibraryウィンドウからLabelとSliderをドラッグ&ドロップでViewウィンドウに置きます。

位置とサイズは下表のようになります。

 XYWH
Label (Slider)202152921
Slider5521424723

ラベルの属性は、InspectorウィンドウのAttributesタブで『Label』の『Text』をスライダの初期値として『50』とするだけです。

気になる方は、『View』の『Drawing』でデフォルトでチェックされているClear Context Before Drawing、Clip Subviews、Autoresize Subviewsのチェックを外してください。

ラベルの値はスライダの操作に連動して変化しますが、ラベル自体を操作するわけではないので『Interaction』の『User Interaction Enabled』をチェックする必要はありません。

658

スライダは、最小値と最大値、そして初期値を設定する必要があります。

今回は1.00~100.00の範囲で初期値を50.00とします。

InspectorウィンドウのAttributesタブで『Slider』の『Values』を、Minimum:1.00、Maximum:100.00、Initial:50.00とします。

気になる方は、『View』の『Drawing』でデフォルトでチェックされているClear Context Before DrawingとAutoresize Subviewsのチェックを外してください。

ラベルと同様にOpaqueにチェックを入れると、透過部分が黒くなるのでチェックは入れないでください。

660

スライダは操作するので『Interaction』の『User Interaction Enabled』はチェックされたままにしておきます。

659


●アウトレットとプロパティ、アクションの宣言

パーツのレイアウトが済んだので、Interface BuilderからXcodeに戻りコードの記述を行います。

まずControl_FunViewController.hを開いて、アウトレットとプロパティ、アクションを宣言します。
(太字が追加した部分)

#import <UIKit/UIKit.h>

@interface Control_FunViewController : UIViewController {
    IBOutlet UITextField *nameField;
    IBOutlet UITextField *numberField;
    IBOutlet UILabel *sliderLabel;
}
@property (nonatomic, retain) UITextField *nameField;
@property (nonatomic, retain) UITextField *numberField;
@property (nonatomic, retain) UILabel *sliderLabel;

- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)backgroundClick:(id)sender;
- (IBAction)sliderChanged:(id)sender;

@end

661

アウトレットはラベル用のsliderLabelだけで、スライダ用には宣言しません。

スライダの値の取得はアクションで行うので、アウトレットは不要だからです。

プロパティはラベル用のアウトレットと同名のものを用意します。

アクションはスライダの値を取得するsliderChanged:メソッドになります。


●プロパティとアクションの実装

Control_FunViewController.mを開き、宣言したプロパティとアクションを実装します。
(太字が追加した部分)

#import "Control_FunViewController.h"

@implementation Control_FunViewController

@synthesize nameField;
@synthesize numberField;
@synthesize sliderLabel;

- (IBAction)sliderChanged:(id)sender {
    UISlider *slider = (UISlider *)sender;
    int progressAsInt = (int)(slider.value + 0.5f);
    NSString *newText = [[NSString alloc] initWithFormat:@"%d", progressAsInt];
    sliderLabel.text = newText;
    [newText release];
}

...

662

sliderChanged:アクションメソッドは、最初に引数のsenderをUISliderクラスの変数sliderにキャストしています。

その引数からUISliderクラスのvalueプロパティでスライダの値を取得しています。
(valueプロパティの詳細は『スライドショーのメソッド(2)』を参照してください)

取得した値valueはfloatなので、整数に丸めるために0.5を加算して、intにキャストしています。

得られたint値progressAsIntを、ラベル表示用の文字列newTextに変換し、textプロパティでラベルのアウトレットsliderLabelに設定します。

最後にメソッド内で生成したNSStringオブジェクトのnewTextを解放します。


・text
(UILabelクラス)

@property(nonatomic, copy) NSString *text

ラベルで表示するテキストです。

この文字列はデフォルトでnilになっています。


●アウトレットとアクションの接続

Interface Builderに戻り、DocumentウィンドウでFile's Ownerを選択し、InspectorウィンドウのConnectionsタブを開きます。

『Outlets』の『SliderLabel』はラベルに接続し、『Received Actions』の『sliderChanged:』はスライダに接続してValue Changedを選択します。

663

接続が完了しましたら、保存してビルドと実行を行い動作を確認してください。

664


●UILabelクラス

UILabelクラスは、読み込み専用のテキストビューを実装します。

このクラスは一行または複数行の静的テキストの描画に使用することができ、ユーザインターフェイスで他のパーツとの識別などに使われます。

基本的にUILabelクラスは、陰影を使用したり強調表示を含む、テキストの外観の制御を提供します。

必要があれば、サブクラス化でテキストの外観を更にカスタマイズすることができます。

UILabelクラスのデフォルトのコンテンツモードはUIViewContentModeRedrawです。

このモードは、矩形領域が変更される度にコンテンツを再描画します。

このモードは、クラスの継承されたcontentModeプロパティで変更することができます。

新規に生成されたラベルオブジェクトは、デフォルトでユーザイベントを無視する設定になっています。

UILabelのカスタムサブクラスでイベント処理を行いたい場合は、オブジェクトを初期化した後に、明示的にuserInteractionEnabledプロパティの値をYESに変更する必要があります。



参考文献

UILabel Class Reference

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る






SoundSport Pulse wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundSport Pulse wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR