标签未显示在叠加层UIView中

时间:2013-02-18 16:53:23

标签: iphone ios objective-c ipad

好的,我已经完成了一百万次这样的事情,但是这个特殊情况让我感到厌烦,我确信它只是一些我想念的傻事......

但我试图在mapView上显示UIView,以给人留下mapview'禁用'的印象。

我创建了一个UIView子类并添加了一个标签。像这样...

.h

  #import <UIKit/UIKit.h>

  @interface DisabledOverlayView : UIView

  @property (nonatomic, strong) UILabel *disabledOverlayViewText;

  @end
没什么复杂的......

在我的.m中我设置了文本并将其添加到我的UIView中。

@synthesize disabledOverlayViewText = _disabledOverlayViewText;


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

    self.backgroundColor = [UIColor blackColor];
    self.alpha = 1;

    _disabledOverlayViewText.textColor = [UIColor whiteColor];
    _disabledOverlayViewText.frame = CGRectMake(0, 0, 200, 200);
    // [_disabledOverlayViewText setCenter:self.center];
    _disabledOverlayViewText.text = @"testing";
    [self addSubview:_disabledOverlayViewText];
}
return self;

}

那么我希望使用这个叠加的课程,我称之为......

    DisabledOverlayView *disabledView = [[DisabledOverlayView alloc] initWithFrame:CGRectMake(12, 12, _mapView.frame.size.width, _mapView.frame.size.height)];
    disabledView.disabledOverlayViewText.text = @"No Location";
    [self.view addSubview:disabledView];

这些都不太复杂......但标签没有显示出来。叠加层看起来很好,但没有标签文字。我已经搞砸了标签的框架,可能它是在可见的视图之外,但没有骰子。我无法弄清楚发生了什么。

2 个答案:

答案 0 :(得分:1)

使用以下代码替换您的initWithFrame方法。我添加了alloc init行并更改了label的背景颜色。试一试,看它是否有效:)

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

        self.backgroundColor = [UIColor blackColor];
        self.alpha = 1;

       _disabledOverlayViewText = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
       _disabledOverlayViewText.textColor = [UIColor whiteColor];
       _disabledOverlayViewText.backgroundColor = [UIColor blackColor];
        // [_disabledOverlayViewText setCenter:self.center];
       _disabledOverlayViewText.text = @"testing";
       [self.view addSubview:_disabledOverlayViewText];

}

答案 1 :(得分:0)

标签似乎没有分配,而且没有。

试试这个

  • (ID)initWithFrame:方法(的CGRect)帧 { self = [super initWithFrame:frame]; if(self){

    self.backgroundColor = [UIColor blackColor]; self.alpha = 1;

    self.disabledOverlayViewText = [[UILabel alloc] initWithFrame:CGRectMake(0,0,200,200)];

    _disabledOverlayViewText.textColor = [UIColor whiteColor];

    // [_disabledOverlayViewText setCenter:self.center];

    _disabledOverlayViewText.text = @“testing”;

    [self addSubview:_disabledOverlayViewText]; }