web-dev-qa-db-ja.com

プログラムでテキストをUIViewに追加する方法

いくつかのテキストを追加したいUIViewがあります。 UITextViewを使用しましたが、編集可能にする必要がないため、やり過ぎだと思います。 UILabelまたはUITextFieldを使用することを考えましたが、スーパービューにUILabelまたはUITextFieldをその内部に配置する方法を教えていない。 UIViewの好きな場所に、選択したフォント/色/サイズのテキストを配置できる最小のフットプリントオブジェクトが必要です。聞いても過言ではないでしょうか?

26
Steve

最も簡単なアプローチは次のとおりです。

UILabel *yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 20)];

[yourLabel setTextColor:[UIColor blackColor]];
[yourLabel setBackgroundColor:[UIColor clearColor]];
[yourLabel setFont:[UIFont fontWithName: @"Trebuchet MS" size: 14.0f]]; 
[yourSuperView addSubview:yourLabel];

コード内でビューを構築または作成するには、おそらくCGRectMakeを多く使用する必要があります。その名前が示すように、UIView-Subclass(この場合はUILabel)の相対位置(スーパービューの境界に対する)とサイズの設定に使用できる長方形を作成します。

それはこのように動作します:

yourLabel.Frame = CGRectMake(x, y, width, height); //x,y,width,height are float values.

xは、スーパービューの左側の境界と追加しようとしているサブビューの先頭との間隔を定義します。これはyにも適用されますが、スーパービューの上部の間隔に関連します。幅と高さは一目瞭然だと思います。

これで軌道に乗ることを願っています。

63
samsam

ビューにUILabelを配置する場所を指示する方法を見つける代わりに、「center」を使用して、UILabelにビュー内で自身を配置する場所を指示できます。

例えば。

myLabel.center = CGPointMake(0.0, 0.0);

UILabelを使用できることを願っています。私にとっては、これは柔軟で編集不可能なテキストの基本形です。

8
Manny

Swiftの場合:

    let yourLabel = UILabel(frame: CGRectMake(100, 100, 100, 100))
    yourLabel.textColor = UIColor.whiteColor()
    yourLabel.backgroundColor = UIColor.blackColor()
    yourLabel.text = "mylabel text"
    yoursuperview.addSubview(yourLabel)
3
Esqarrouth

この質問は古いですが、UILabelまたはUITextFieldを使用しない純粋なUIViewテキストオプション(他のすべての答えが説明しているように、質問はそれらなしでそれを行う方法です)では、サブクラス化されたUIViewのdrawRectが私のために機能します。そのようです:

 - (void)drawRect:(CGRect)rect{
     NSString *string = @"Hello World!";
     [string drawAtPoint:CGPointMake(100, 100) withFont:[UIFont boldSystemFontOfSize:16.0]];
 }
2
entire

このルーチンは、X-Y位置にテキストを表示します

-(void)placeText:(NSString *)theText:(int)theX:(int)theY {
    UILabel *textLabel;

    // Set font and calculate used space
    UIFont *textFont = [UIFont fontWithName:@"Helvetica" size:14];
    CGSize textStringSize = [theText sizeWithFont:textFont constrainedToSize:CGSizeMake(300,50) lineBreakMode:NSLineBreakByTruncatingTail];

    // Position of the text
    textLabel = [[UILabel alloc] initWithFrame:CGRectMake(theX+OFFSETIMAGEX-(textStringSize.width/2), theY+OFFSETIMAGEY-(textStringSize.height/2), textStringSize.width,textStringSize.height)];

    // Set text attributes
    textLabel.textColor = [UIColor blackColor];
    textLabel.backgroundColor = [UIColor orangeColor];
    textLabel.font = textFont;
    textLabel.text = theText;

    // Display text
    [self.view addSubview:textLabel];
}
1
Vincent

それは遅いかもしれませんが、ここに私が使用しているものがあります-

CGRect labelFrame = CGRectMake(120,300, 530, 100);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
//If you need to change the color
[myLabel setTextColor:[UIColor whiteColor]];
//If you need to change the system font
[myLabel setFont:[UIFont fontWithName:NULL size:23]];
//If you need alignment
[myLabel setTextAlignment:NSTextAlignmentCenter];
// The label will use an unlimited number of lines
[myLabel setNumberOfLines:0];
//Add label view to current view
[self.view addSubview:myLabel];
NSString *someString = @"Sample String, Yarp!";
myLabel.text = someString;
1
CmosII

uILabelをビューに追加します。次に、ビューのlayoutSubviewsメソッドをオーバーライドします。

0
gga80