我有一个使用了一段时间的 UIPopoverController。我现在正在为 iOS 7 更新我的代码,当我调整弹出框的大小时,它突然在屏幕上移动,这导致了非常糟糕的用户体验。
当我处于纵向时,它不会发生。我点击打开弹出框,然后点击导致弹出框展开的按钮,一切都很好。但是,如果我切换到横向并做同样的事情,当我点击按钮展开弹出框时,它会滑到另一个位置。
这是一段视频,展示了我在说什么:https ://vimeo.com/75632364
这是当用户点击导致调整弹出框大小的按钮时运行的代码:
- (IBAction) touchedButtonPayDownLoan:(id)sender {
UIView *payOffView = nil;
if ([self.liability isBankLoan]) {
payOffView = self.viewPayoffBank;
} else {
payOffView = self.viewPayoffOther;
}
CGRect loanFrame = payOffView.frame;
loanFrame.origin.y = self.toolbar.frame.origin.y;
payOffView.frame = loanFrame;
[self.view addSubview:payOffView];
[self.view bringSubviewToFront:self.toolbar];
[UIView beginAnimations:@"Show Payoff View" context:nil];
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[items removeLastObject];
[items addObject:self.barButtonFinish];
self.toolbar.items = items;
// -------- RELEVANT BITS HERE ---------
CGRect frame = self.view.frame;
frame.size.height += payOffView.frame.size.height;
self.view.frame = frame;
self.preferredContentSize = frame.size;
// -------- RELEVANT BITS HERE ---------
[UIView commitAnimations];
}
我不希望弹出框跳转位置,因为这会惹恼用户。有任何想法吗?