UILabelをstoryboardを使わずにObjective-Cのコードだけで設定する方法です。
Objective-C
Xcode 9.4
Xcode 9.4
CGRectMake を使ってラベルのサイズを決める
画面の中央に “Hello World” を表示するようにします。
ポイントとしては、
- label.frame = CGRectMake( X, Y, Width, Height);
- CGRectMake() を使ってラベルのサイズを含めて位置も決められる
- view.frame.size.height で画面の高さを検出
CGMake で先頭位置とサイズを決めラベルの frame に入れる
その後、テキスト内容を代入してから view に追加することで位置は決められます。例えばこのような設定です。
1 2 3 4 |
UILabel *tesrLabel = [[UILabel alloc] init]; tesrLabel.frame = CGRectMake(15, 20, 160, 15); tesrLabel.text = @"Hello World"; [self.view addSubview:tesrLabel]; |
view.frame.size.height
int screenHeight = self.view.frame.size.height;
のようにして高さを求められます。portraitでは長い方向の高さとなります。
まとめると
ViewController.m
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#import "ViewController.h" @interface ViewController () @end @implementation ViewController{ UILabel *testLabel; int screenHeight; int screenWidth; } - (void)viewDidLoad { [super viewDidLoad]; [self setLabel]; } - (void)setLabel{ // ラベルのインスタンス生成 testLabel = [[UILabel alloc] init]; screenHeight = self.view.frame.size.height; screenWidth = self.view.frame.size.width; NSString *str = @"Hello World!"; int height = screenHeight; int width = screenWidth; testLabel.frame = CGRectMake(120, height/2-30, width, 60); testLabel.text = str; testLabel.textColor = [UIColor blackColor]; testLabel.font = [UIFont boldSystemFontOfSize:24]; [self.view addSubview:testLabel]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end |
文字列を中央に持ってくる方法は他にありますがとりあえず決め打ちでやって見た例です。
Reference:
UILabel – UIKit | Apple Developer Documentation