gpt4 book ai didi

ios - 如何准备 UISplitViewController 辅助 VC 以更改 displayMode?

转载 作者:行者123 更新时间:2023-11-29 12:38:12 28 4
gpt4 key购买 nike

在 iOS8 中,UISplitViewController 发生了变化,现在通过 splitViewController:willChangeToDisplayMode: 通知它的委托(delegate)有待处理的 displayMode 变化。我需要更新辅助 View Controller 的某些方面以响应此更改。

在此委托(delegate)方法期间调用辅助 VC 上的方法非常简单,但 VC 尚不知道其新边界是什么。

除了辅助 VC 边界上的 KVO 之外,是否有合理的方式通知 VC 的边界将发生变化?理想情况下,VC 会调用 viewWillTransitionToSize:withTransitionCoordinator: 来更改 displayMode,因为这提供了在过渡过程中设置动画的能力。

最佳答案

所以,现在我只使用 KVO。我听从了一些建议 here .

viewDidLoad中:

[self.view addObserver:self
forKeyPath:NSStringFromSelector(@selector(frame))
options:(NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew)
context:nil];

然后:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isKindOfClass:[UIScrollView class]] && [keyPath isEqualToString:NSStringFromSelector(@selector(frame))]) {
CGRect newFrame = [change[@"new"] CGRectValue];
CGRect oldFrame = [change[@"old"] CGRectValue];

if ((newFrame.size.width == oldFrame.size.width) || (newFrame.size.height == oldFrame.size.height)) {
// If one dimension remained constant, we assume this is a displayMode change instead of a rotation

// Make whatever changes are required here, with access to new and old frame sizes.
}
}
}

我在 View 的边界上尝试了这个,但是它比框架上的 KVO 更频繁地触发。

关于ios - 如何准备 UISplitViewController 辅助 VC 以更改 displayMode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25696281/

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