0
어떤 이유로 든 내 UIWindow
의 rootViewController
의 여백이 왼쪽과 오른쪽에 16, 위쪽과 아래쪽에 0으로 설정되어 있습니다. 불행히도 필자는 모든 것을 수동으로 초기화하는 레거시 (읽기 : 비 스토리 보드) 응용 프로그램을 사용하고 있습니다. 이것은 출력루트보기 컨트롤러 여백이 홀수 값으로 설정되었습니다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
코드
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[UIViewController alloc] init];
[self.window makeKeyAndVisible];
UIEdgeInsets insets = self.window.layoutMargins;
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top);
insets = self.window.rootViewController.view.layoutMargins;
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top);
생산에서이 코드가 0
의 아래쪽 여백을 가지고 주장하는 많은 레이어 깊은 뷰 컨트롤러에 영향을
2016-08-03 18:10:24.280 app[426:182429] Left 8.000000, Right 8.000000, Bottom 8.000000, Top 8.000000
2016-08-03 18:10:24.280 app[426:182429] Left 16.000000, Right 16.000000, Bottom 0.000000, Top 0.000000
편집
나는 마침내 이것이 예상되는 동작임을 알게되었습니다. 그러나 새로운 UIViewController를 푸시 할 때 아래쪽 여백이 추가되지 않는다는 것에 놀랐습니다. 이 예상되는 동작입니까? iOS에서 하단 마진을 기대하지 않아야합니까?
나는 내보기를 배치 할 때 layoutMargins에 의존하고 있었고, 단추가보기의 맨 아래에 놓이지 만 외부에서 설정한다는 것이 이상하다는 것을 알게되었습니다. 내 생각에 이것은 예상 된 것 같지만 스토리 보드와 XIB를 함께 사용하는 경우 하단 및 상단 레이아웃 가이드를 사용하도록 제안합니다. 무슨 유산이 계속되고있는 것처럼 보입니다. – JustinHK
AutoLayout을 사용하는 것과 프레임/경계를 사용하는 것의 차이점을 분명히 이해했는지 확인하십시오. 마진 지침에 대한 귀하의 기대는 시스템마다 다를 것입니다. – bsarrazin
필자는 autolayout 만 사용한 적이 있습니다. iOS에서 단일 페이지 응용 프로그램을 만들고 위쪽, 아래쪽 및 측면 여백에 유일한 하위보기를 잠그면 가장자리에 손이 닿지 않지만 터치하지 않습니다. 화면의 상단과 하단. – JustinHK