2013-02-18 3 views
1

좋아, 나는 이런 종류의 일을 백만 번했을 그러나이 특별한 경우는 저를 탈출 내가 놓친 거지 바보 같은 그 뭔가 확신 ...라벨 오버레이의 UIView에 표시되지

그러나 나는 지도 뷰 위에 UIView를 표시하려고하면 mapview가 '사용 중지되었습니다.'라는 인상을 주려고합니다.

UIView 하위 클래스를 만들고 단일 레이블을 추가했습니다. 같은 ... 내하는 .m에서

#import <UIKit/UIKit.h> 

    @interface DisabledOverlayView : UIView 

    @property (nonatomic, strong) UILabel *disabledOverlayViewText; 

    @end 

아무것도 복잡하지 .H

...

나는 텍스트를 설정하고 내 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]; 

없음이 너무 복잡하지를 사용하려면 ..하지만 레이블이 표시되지 않습니다 쪽으로. 오버레이는 잘 보이지만 레이블 텍스트는 표시되지 않습니다. 눈의 시야가 아니라 주사위가 아닐지도 모른다고 생각하는 레이블의 프레임을 엉망으로 만들었습니다. 그리고 나는 무슨 일이 일어나는지 알 수 없다.

+1

귀하는 귀하의 DisabledOverlayView.textView 프레임이 항상 동일하다는 것을 알고 있습니까? 하위보기로 mapview를 추가 한 후에 레이블을 추가합니까? – peko

+0

예, 레이블의 프레임은 Ive가 하드 코드했기 때문에 항상 동일합니다. 그리고 Label은 내 DisabledOverlayView의 init 호출에 추가되어야합니다.mapView가 이미 존재하고 (xib에 있음) 데이터 검사를 실행하여 비활성화해야하는지 확인한 다음 내 오버레이를 만든 다음 레이블을 만듭니다. 예, 맵뷰가 할당 된 후에 라벨을 만들어야합니다. 어느 쪽이든, 레이블은지도와 관련이 없습니다. 전적으로. – JMD

+2

_disabledOverlayViewText를 만들지 않습니다. 이 초기화는 오버레이 뷰 자체를위한 것입니다. 레이블에 대한 alloc init은 어디에 있습니까? – rdelmar

답변

1

initWithFrame 메서드를 아래 코드로 바꿉니다. alloc 초기화 줄을 추가하고 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]; 

} 
0

레이블이 할당되지 않은 것으로 보입니다.

  • (ID) initWithFrame 시도 (CGRect) 프레임 { 자기 = [슈퍼 initWithFrame : 프레임]; 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]; }

관련 문제