从底部加载的视图不会填满整个视图

view loading from the bottom doesn't fill whole view

当我触摸 Xcode 中的按钮时,我正在使用此代码加载视图。

UIStoryboard *storyboard = self.storyboard;
UIViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"FirstCar"];[self presentViewController:svc animated:YES completion:nil];

视图从底部加载,我希望它没有,而是从侧面加载。主要问题是当它完成加载时,顶部有一个大约 1/2 英寸的间隙。我已经使用此代码将其加载到顶部,具体取决于屏幕大小。

backgroundView = [[UIImageView alloc] initWithFrame:CGRectMake(-20, -20, 454, 776)];

它以前可以正常工作,但现在由于某种原因不能正常工作。当我 top/hold 在对象上使用 "DragView" 移动它时,对象移动不稳,但整个视图上下移动。我什至可以通过向下滑动使视图内容完全消失。它不会像以前的视图那样完全是空白的黑色。我不知道这是否相关,但有些事情很奇怪。 有谁知道我做错了什么。 提前致谢。

您所描述的是 iOS 13 中呈现的视图控制器的默认行为 - 呈现的 VCs 从底部滑入并在顶部留出间隙(表明用户可以通过向下拖动来关闭)。

您可以通过将显示的 VC 的 modalPresentationStyle 设置为全屏来消除间隙(和向下滑动行为),如下所示:

svc.modalPresentationStyle = UIModalPresentationFullScreen;

在调用 present 之前添加该行(或者您可以在情节提要中设置该值),您应该会看到它覆盖了屏幕。您可以找到其他演示文稿样式的文档 in the Apple docs

至于你提到的从右到左的动画,侧向滑入通常与 UINavigation 控制器推送相关联,而不是模态呈现,但如 中所述,你可以实现侧向动画使用自定义过渡的模式。

这是post中的相关代码:

CATransition *transition = [[CATransition alloc] init];
transition.duration = 0.5;
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.view.window.layer addAnimation:transition forKey:kCATransition];
[self presentViewController:svc animated:false completion:nil];