gpt4 book ai didi

ios - 使用 UIModalPresentationCustom 在 ModalViewController 中设置框架 iOS8

转载 作者:行者123 更新时间:2023-11-28 21:54:50 25 4
gpt4 key购买 nike

我想展示一个模态视图 Controller 。在 iOS7 中,一切运行良好,但在 iOS8 中, View Controller 的框架发生了变化。我阅读了一些答案,其中一种解决方案是设置 preferredContentSize 和 modalPresentationStyle = UIModalPresentationFormSheet。

但我需要我的 modalPresentationStyle = UIModalPresentationCustom 并且我无法使用这种呈现样式设置 View Controller 的框架。

我的代码是:

- (void)presentViewController:(UIViewController*)viewController withCustomSize:(NSValue*) size withInitialSetup:(void (^)(void))setupBlock withCompletion:(void (^)(void))completion {

UiViewController * navCon = [[UIViewController alloc] initWithRootViewController:viewController];
navCon.shouldDismissKeyboardOnResign = YES;

if (SYSTEM_VERSION_LESS_THAN(IOS8)){

navCon.modalPresentationStyle = UIModalPresentationFormSheet;
navCon.modalTransitionStyle = UIModalTransitionStyleCoverVertical;


} else {

navCon.modalPresentationStyle = UIModalPresentationCustom;
navCon.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

}

[viewController setupCustomNavigationBar];

setupBlock();

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(IOS8)) {

navCon.transitioningDelegate = self;

if (size) {

CGSize sz = size.CGSizeValue;
navCon.preferredContentSize = CGSizeMake(sz.width, sz.height);

}else {

navCon.preferredContentSize = CGSizeMake(kPopupsWidth, kPopupsHeight);
}
}

[self presentViewController:navCon animated:YES completion:completion];

if (SYSTEM_VERSION_LESS_THAN(IOS8)) {

if (size) {

CGSize sz = size.CGSizeValue;
navCon.view.superview.bounds = CGRectMake(0, 0, sz.width, sz.height);

} else {

navCon.view.superview.bounds = CGRectMake(0, 0, kPopupsWidth, kPopupsHeight);
}

[navCon.view.superview.layer setCornerRadius: 8];
[navCon.view.superview.layer setBorderColor: [UIColor clearColor].CGColor];
[navCon.view.superview.layer setBorderWidth: 2];
[navCon.view.superview setClipsToBounds: YES];
}
}

我设置了 preferedContentSize 但框架没有改变。知道为什么会这样吗?

最佳答案

如果您要使用 UIModalPrestationCustom,您必须提供一个 UIViewControllerTransitioningDelegate,否则它将使用默认的转换委托(delegate),在您的情况下这听起来像一个表单工作表代表。

关于ios - 使用 UIModalPresentationCustom 在 ModalViewController 中设置框架 iOS8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com