在iOS上以编程方式显示视图中的单个字符串

时间:2010-08-31 03:53:40

标签: ios cocoa-touch

我们有一个充满小视图的窗口(想想一个计算器)。

对于窗口上的特定视图,我们希望在视图中显示单个字符串,而不使用Interface Builder添加字符串。 我们需要能够更改字符串并刷新视图。

我们如何以编程方式将字符串添加到视图并显示它?


更新

好的,这是我们目前的代码。头文件没什么特别之处。 我想真正的quandry正在考虑我们可以很容易地改变背景颜色,为什么我们的文本只是没有显示? 两个版本都在那里,很乐意展示“苹果”或“橘子”。

- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {

  bgString = @"orange";

  UILabel* aLabel = [[UILabel alloc] init];
  aLabel.text = @"apple";
  self.textLabel = aLabel;
  [aLabel release];
  [self addSubview:textLabel];
}
return self;
}

- (void)drawRect:(CGRect)rect {
    // Drawing code 
  [[UIColor yellowColor] setFill]; 
  UIRectFill(rect);
  [self drawStringCenteredIn:rect];
}

- (void)drawStringCenteredIn:(CGRect)r {
  //CGSize strSize = [bgString size];
  CGPoint strOrigin;
  strOrigin.x = r.origin.x; //+ (r.size.width - 10)/2;
  strOrigin.y = r.origin.y; //+ (r.size.height - 10)/2;
  //[bgString drawAtPoint:strOrigin withFont:[UIFont fontWithName:@"Helvetica" size:10]];
  [textLabel drawTextInRect:r];
}

4 个答案:

答案 0 :(得分:4)

在你的视图控制器中.h:

@interface MyViewController
{
    UILabel* label;
}

@property (nonatomic, retain) UILabel* label;

在视图控制器中.m:

- (void)dealloc
{
    [label release];
    [super dealloc];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UILabel* aLabel = [[UILabel alloc] init];
    aLabel.text = @"Initial Text";
    self.label = aLabel;
    [aLabel release];
    [self.view addSubview:aLabel];
}

- (void)viewDidUnload
{
    [self.label removeFromSuperview];
    self.label = nil;
}

// Call this when you need to update the label
- (void)updateLabel
{
    self.label.text = @"Some updated text";
}

这是从记忆中做到的,但它应该有用。

答案 1 :(得分:1)

试试这个:

UILabel* aLabel = [[UILabel alloc] initWithFrame:[self bounds]];

如果您手动创建标签,则还需要手动设置标签。 框架本身是父视图内的大小和位置(superview)。 在我的例子中,我设置了标签框架以占据整个视图。如果您需要自定义尺寸,可以使用:

UILabel* aLabel = [[UILabel alloc] initWithFrame:CGRectMake(x,y,width,height)];

其中(x,y) - 标签左上角的位置。

答案 2 :(得分:0)

如何创建UILabel并将其添加到视图中?

答案 3 :(得分:0)

如果你是UIView的子类,你可以在视图的drawRect中绘制你的字符串。这样可以非常灵活地修改文本,外观和位置(甚至可以为其设置动画,旋转,旋转等)。

更改NSString后,在视图上调用setNeedsDisplay。然后在调用drawRect时在NSString上执行drawAtPoint:withFont:。