我的应用程序有一个小UIView,隐藏在UINavigationBar后面。我有一个手势识别器设置,当导航条被点击,这个‘弹出’UIView下降到视图,而在它下面的UITableView下降为它腾出空间。这样做很好,但是当我试图在集合视图中滑动以加载新的单元格时,表视图会将降低的视图推回导航条后面。

我尝试在popover视图和表视图上放置和lldb监视点,以查看是否可以跟踪视图帧更改,但我似乎永远无法到达监视点:
(lldb) w s v self->_drawerView->_layer
Watchpoint created: Watchpoint 3: addr = 0x7feac410b788 size = 8 state = enabled type = w
watchpoint spec = 'self->_drawerView->_layer'
new value: 0x00007feac410b850
(lldb) w s v self->_tableView->_layer
Watchpoint created: Watchpoint 2: addr = 0x7feac6008008 size = 8 state = enabled type = w
watchpoint spec = 'self->_tableView->_layer'
new value: 0x00007feac4102cf0这是我的动画代码。我已经设置了断点,并且知道这段代码不会导致这个错误。
- (void)toggleDrawer:(UIGestureRecognizer *)recognizer {
[UIView animateWithDuration:0.5 delay:0.0 usingSpringWithDamping:0.6f initialSpringVelocity:0.5f options:0 animations:^{
if (lowerDrawer) {
self.drawerView.frame = CGRectMake(self.drawerView.frame.origin.x, self.drawerView.frame.origin.y + 70, self.drawerView.frame.size.width, self.drawerView.frame.size.height);
// lower table at same time
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y + 70, self.tableView.frame.size.width, self.tableView.frame.size.height - 70);
// flip arrow
self.arrowImageView.transform = CGAffineTransformMakeRotation(M_PI);
lowerDrawer = NO;
} else {
self.drawerView.frame = CGRectMake(self.drawerView.frame.origin.x, self.drawerView.frame.origin.y - 70, self.drawerView.frame.size.width, self.drawerView.frame.size.height);
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y - 70, self.tableView.frame.size.width, self.tableView.frame.size.height + 70);
// flip arrow
self.arrowImageView.transform = CGAffineTransformMakeRotation(M_PI * 180);
lowerDrawer = YES;
}
} completion:^(BOOL finished) {
//
}];
}我应该如何开始调试这个呢?我能做些什么来确保集合视图在加载新单元格时不会更改其框架吗?
发布于 2014-11-04 04:15:11
看起来这是由您手动设置的坐标和由Storyboard文件自动设置的坐标之间的冲突。
尝试检查您可能拥有的任何自动约束,或取消选中“使用自动退出”在您的故事板界面生成器。
https://stackoverflow.com/questions/26664008
复制相似问题