2011-03-13 7 views
0

로드 뷰 메서드에 다음 코드가 있는데 왜 다른 색상 블록이 모두 표시되지 않는지 이해할 수 없습니다. 두 번째 'self.view ='가 두 번째보기와 겹쳐서 녹색보기 만 볼 수 있다고 생각했습니다. 그러나보기 알파를 0.5로 설정하더라도 여전히 파란색 블록이 표시되지 않고 초록색 블록이 더 투명 해집니다.iPhone보기가 표시되지 않습니다.

나는 정말 바보 같은 것을 놓치고 있습니까?

- (void)loadView { 
CGRect newFrame; 
newFrame.origin = CGPointMake(100, 100); 
newFrame.size = CGSizeMake(100, 40); 
UIView *myView = [[UIView alloc] initWithFrame:newFrame]; 
myView.backgroundColor = [UIColor blueColor]; 
//myView.alpha = 0.5; 
self.view = myView; 

CGRect newFrame2; 
newFrame2.origin = CGPointMake(100, 200); 
newFrame2.size = CGSizeMake(100, 40); 
UIView *myView2 = [[UIView alloc] initWithFrame:newFrame2]; 
myView2.backgroundColor = [UIColor greenColor]; 
//myView2.alpha = 0.5; 

self.view = myView2; 

}

답변

1

self.viewmyView으로 설정 한 다음 몇 줄만 입력하면 myView2으로 재설정됩니다. 정수 변수 i = 42을 지정한 후 마치 i = 100 인 것처럼 두 번째 할당이 첫 번째 할당을 대체합니다.

UIView의 addSubview: 방법을 살펴보십시오.

+0

감사를 사용해보십시오. 나는 첫 번째 self.view = myView; 화면에는 아무 것도 나타나지 않았다. 파란 상자를보고 나서 휴식을 취한 후에는 녹색으로 변경된보기를 보았습니다. 그러나 그 작업을 수행하지 못해서 무슨 일이 일어나고 있는지 확신 할 수 없었습니다. – Mike

+0

디스플레이는 일반적으로 프로그램이 메인 루프 (프레임 워크 내부에 있음)로 돌아 오면 일반적으로 업데이트됩니다. 그렇지 않으면 디스플레이를 변경 한 모든 조작은 매우 다음 라인이 다른 다시 그리기를 요구할 때에도 비싼 다시 그리기를 수행합니다. – Anomie

+0

의미가 있습니다. 감사! addSubview를 사용할 수 있었고 올바르게 작동합니다. [[자체보기] addSubview : myView2]; – Mike

0

이 self.view 만, 한 번에 하나 개의보기를 저장할 수있는 코드에서 너무 :

self.view = MYVIEW;

다음

self.view = myView2;

기본적으로 self.view에 할당 된 "myView"가 새로운 "myView2"로 바뀌므로 첫 번째 것은 보이지 않고 두 번째 것은 보지 않게됩니다.

0

다음 호출에서 self.view를 사용하여보기를 바꾸기 만하면됩니다. 두 번째 뷰는 현재 뷰에 마지막으로 할당 된 뷰이므로 두 번째 뷰만 보게됩니다.

addSubview:

관련 문제