我想要做的是提供一个来自底部并具有自定义大小的viewController。无论我做什么,或者看起来都是naff(例如它的动画,闪烁然后变得透明),全屏或黑屏整个屏幕。我已经阅读了一些自定义代表处理动画的解决方案,但必须有一个简单的方法。此外,许多解决方案适用于iOS 6<
HackViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"HackViewController"];
vc.delegate = self;
vc.modalPresentationStyle= UIModalPresentationCustom;
vc.view.frame = CGRectMake(0, 0, 800, 400);
vc.credits = CREDIT_PER_LEVEL * building.buildingLevels;
vc.view.backgroundColor = [UIColor clearColor];
[self presentViewController:vc animated:YES completion:^{
vc.view.backgroundColor = [UIColor clearColor];
}];
答案 0 :(得分:1)
如果您只想支持iOS7及更高版本,可以使用自定义模式演示样式(UIModalPresentationCustom
)实现此功能,并实现transitioningDelegate
以返回转换控制器。在转换控制器中,将在演示发生时调用,并且您可以提供所呈现的视图控制器的目标帧。这具有使用系统表示模型的巨大优势,并且系统知道已经呈现了控制器。
如果您需要支持iOS6,则需要将呈现的视图控制器添加为子视图,将视图控制器添加为呈现视图控制器的子视图控制器,并自行管理视图层次结构。由于手动视图层次结构控制和子/父视图控制器,这不是最佳的。
答案 1 :(得分:1)
如果你想将viewController(比如VC2)作为模态添加到第一个viewController(比如VC1),那么在 VC1 中,当你呈现 VC2 时,
[self presentViewController:VC2 animated:YES completion:nil];
在 VC2 viewDidLoad
[self.view setBackgroundColor:[UIColor colorWithRed:211.0/255.0 green:211.0/255.0 blue:211.0/255.0 alpha:0.8]];
并且AppDelegate
下的application didFinishLaunchingWithOptions:
[[self.window rootViewController] setModalPresentationStyle:UIModalPresentationCurrentContext];
您可以在 VC2
中创建其他视图,例如imageView
或label
等
答案 2 :(得分:0)
你不必presentViewController:
,你可以用addSubview:
做到这一点
继续执行您正在执行的操作但添加vc
视图以查看显示的视图控制器,而不是使用vc
presentViewController:
如果你在动画块中这样做,它看起来会很好。