2016-10-11 4 views
0

모든 응용 프로그램에 사용자 정의 상태 표시 줄을 표시해야하는 응용 프로그램이 있습니다. 있는 난의 ViewController에서 I (0, 0, 폭 20) 프레임보기 뷰를 생성하고 일부 요소를 추가창이나 탐색 컨트롤러에서 뷰를 추가 할 때 제약 조건이 변경 되었습니까?

self.window.windowLevel = UIWindowLevelStatusBar; 

이어서 didFinishLaunchingWithOptions: 방법에 코드를 썼다.

나는이

AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[self.statusview setTranslatesAutoresizingMaskIntoConstraints:YES]; 
[appdelegate.window addSubview:statusview]; 

같은 창 위에 해당 뷰를 추가하려고하지만 더 요소가없는 않고 왼쪽 상단에 추가지고 있습니다. 그러나 너비를 설정하고 요소를 다시 추가하면 표시됩니다.

아무도 도와 줄 수 있습니까?

답변

0

문제는 뷰의 너비라고 생각합니다. 너비가 맞는지 확인하십시오.

너비가 적당하고 문제가 계속 발생하면 코드와 스크린 샷을 업데이트하십시오.

+0

또한이 줄을 추가 할 때 width 제약 조건을 추가했습니다. statusview.frame = CGRectMake (0, 0, self.view.frame.size.width, 20); 내부의 요소가 – hacker

+0

자체를 표시하지 않습니다. view.frame.size.width를 [uiscreen mainscreen] .bounds.size.width로 변경하고 다시 시도하십시오. –

+0

동일한 result.added하지만 내부 요소가 누락되었습니다 – hacker

0
- (BOOL)prefersStatusBarHidden { 
return YES; 
} 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
_statusview.frame = CGRectMake(0, 50, self.view.frame.size.width, 45); 
} 

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
_statusview.frame = CGRectMake(0, 0, self.view.frame.size.width, 45); 
} 

- (void)viewDidLoad { 
[super viewDidLoad]; 
_statusview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 45)]; 
_statusview.backgroundColor = [UIColor blackColor]; 

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(0, 0, 100, 25); 
btn.center = _statusview.center; 
[btn setTitle:@"button" forState:UIControlStateNormal]; 
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[btn setBackgroundColor:[UIColor whiteColor]]; 
[_statusview addSubview:btn]; 
[_statusview setTranslatesAutoresizingMaskIntoConstraints:YES]; 
[self.view addSubview:_statusview]; 
self.view.backgroundColor = [UIColor whiteColor]; 
} 

코드를 viewdidload에 넣습니다. 너가 원하는게 그거야 ?

+0

예를 들어 창 위 또는 뷰 위에있는 경우 효과는 같습니다. –

+0

뷰가 항상 모든 뷰 위에 있어야하는 경우 필요한 것은 상위 컨트롤러이며 모든 하위 컨트롤러는 상위 클래스를 상속합니다. –

+0

프레임을 설정하면 내부 요소가 표시되지 않습니다. 이미 U로 말했습니다. – hacker