【问题标题】:IPad navigation controller toolbar positioniPad导航控制器工具栏位置
【发布时间】:2013-12-27 19:03:57
【问题描述】:

我在UINavigationViewController 中有一个UIViewController。我使用navigationController.toolbar 进行一些操作。

在第一次设备轮换之前没有问题。工具栏离开屏幕框架后。

没有什么可做的,即使是另一个设备旋转也无法解决这个问题。 该问题仅出现在 iPad ios v.6 上。 代码很简单:

- (void)createToolbar{
   UIImage *toolbarBack = [[UIImage imageNamed:@"navbar"] resizableImageWithCapInsets:UIEdgeInsetsMake(2, 2, 2, 2)];
   [self.navigationController.toolbar setBackgroundImage:toolbarBack forToolbarPosition:UIBarPositionBottom barMetrics:UIBarMetricsDefault];
   self.navigationController.toolbar.delegate = self;
   //...
   self.toolbarItems = @[item1, space, item2, space, item3, space, item4];
}

- (void)showToolbar{
   [self.navigationController setToolbarHidden:YES animated:NO];
}

#pragma mark - toolbar delegate methods

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar{
   return UIBarPositionBottom;
}

更新 我发现在旋转 navigationController.view.height == 1004 之前和旋转之后它增加了 20(1024)。是状态栏问题吗?

【问题讨论】:

  • 我猜你有一个不好的约束,它把你的工具栏推到你的视图深处。
  • 你能粘贴你的代码吗??

标签: ios objective-c ipad uinavigationcontroller uitoolbar


【解决方案1】:

为您的视图控制器设置工具栏委托并实现方法:

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
    return UIBarPositionBottom;
}

如果您使用情节提要,您可以在屏幕底部和工具栏之间创建约束。

【讨论】:

  • 不幸的是我不能使用自动布局。使用工具栏委托方法没有意义。
  • 所以只需实现上述方法并在 viewDidLoad 添加 navigationController.toolbar.delegate = self.不记得添加协议 .
  • 我已经实现了协议方法,但没有任何区别
  • 我没有设置收费栏框架。我只是设置了一个位置([self.navigationController.toolbar setBackgroundImage:toolbarBack forToolbarPosition:UIBarPositionBottom barMetrics:UIBarMetricsDefault];)它出现在底部。
  • 尝试在 layoutSubview 方法中设置框架,将导航栏粘贴在屏幕底部:屏幕高度 - 导航栏高度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多