Как программно добавить текст в UIView - PullRequest
26 голосов
/ 09 июля 2010

У меня есть UIView, к которому я хотел бы добавить несколько бит текста.Я использовал UITextView, но я думаю, что это излишне, поскольку его не нужно редактировать.Я думал об использовании UILabel или UITextField, но я не понимаю, как вы говорите суперпредставлению, где расположить UILabel или UITextField внутри себя.Мне нужен объект с наименьшим размером, который позволит мне поместить текст шрифта / цвета / размера по моему выбору в UIView, где я хочу.Не слишком много, чтобы спросить, а?

Ответы [ 7 ]

63 голосов
/ 09 июля 2010

Самый простой подход для вас будет:

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, но относится к интервалумежду верхней границей вашего суперпредставления.тогда ширина и высота говорят сами за себя, я думаю.

Надеюсь, это поможет вам.

8 голосов
/ 09 июля 2010

Вместо того, чтобы находить способ сказать виду, где позиционировать UILabel, вы можете указать UILabel, где позиционировать себя в представлении, используя «center».1005 * Надеюсь, вы сможете использовать UILabel, для меня это базовая форма гибкого, не редактируемого текста.

3 голосов
/ 23 ноября 2014

Для Свифта:

    let yourLabel = UILabel(frame: CGRectMake(100, 100, 100, 100))
    yourLabel.textColor = UIColor.whiteColor()
    yourLabel.backgroundColor = UIColor.blackColor()
    yourLabel.text = "mylabel text"
    yoursuperview.addSubview(yourLabel)
2 голосов
/ 07 ноября 2012

Этот вопрос старый, но для чисто текстовой опции UIView без использования UILabel или UITextField (как описывают все остальные ответы, но вопрос в том, как это сделать без них), drawRect в подклассе UIView работает для меня. Вот так:

 - (void)drawRect:(CGRect)rect{
     NSString *string = @"Hello World!";
     [string drawAtPoint:CGPointMake(100, 100) withFont:[UIFont boldSystemFontOfSize:16.0]];
 }
1 голос
/ 30 марта 2015

Может быть поздно, но вот что я использую: -

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 голос
/ 07 декабря 2012

Эта процедура отображает текст в позиции 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];
}
0 голосов
/ 09 июля 2010

добавить UILabel в ваш View. затем переопределите метод layoutSubviews представления.

...