【问题标题】:iOS UITabBarController on 3.5 inch vs 4inch display3.5 英寸与 4 英寸显示器上的 iOS UITabBarController
【发布时间】:2014-10-19 17:12:40
【问题描述】:

我的应用程序以LoginViewController (UIViewController) 启动,它检查用户是否已登录。如果用户已登录,它使用导航控制器推送一个 taskViewController (UIViewController),其中包含一个表格视图它。它显示任务列表。

当用户点击任务时,它会启动 taskDetailsViewController (UIViewController),我在其中以编程方式添加 UITabBarController。

- (void)viewDidLoad
{
[super viewDidLoad];
 self.tabBarController = [[UITabBarController alloc] init];
 DetailsViewController *detailsViewController = [[DetailsViewController alloc] init];
 CommentsViewController *commentsViewController = [[CommentsViewController alloc] init];
 FilesViewController *filesViewController = [[FilesViewController alloc] init];
 NSArray* controllers = [NSArray arrayWithObjects:detailsViewController, commentsViewController, filesViewController, nil];

self.tabBarController.viewControllers = controllers;
self.tabBarController.selectedIndex = 0;

[self.view addSubview:self.tabBarController.view];
}

这在 4 英寸显示器上运行良好,但在 3.5 英寸显示器上,标签栏没有底部对齐,它们有点向底部浮动。

知道我在这里做错了什么吗?

         --------------------------------------------
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |------------------------------------------|
         |           |                |             |
         |   Details |   Comments     |   Files     |
         |           |                |             |
         |           |                |             |
         |------------------------------------------|
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         |                                          |
         --------------------------------------------

【问题讨论】:

    标签: ios iphone uitabbarcontroller


    【解决方案1】:

    您需要设置布局约束。对于您的情况,最简单的方法是创建一个将到屏幕底部的距离设置为 0 的约束。例如:

    NSDictionary *viewsDictionary =
                NSDictionaryOfVariableBindings(self.tabBarController.view);
    NSArray *constraints =
        [NSLayoutConstraint constraintsWithVisualFormat:@"V:[tabBar]-|"
                            options:0 metrics:nil views:viewsDictionary];
    [self.view addConstraints:constraints];
    

    这表示将标签栏视图垂直刷新到屏幕底部。

    【讨论】:

    • 嗨 Rikkles,我添加了以下内容,但没有影响。UIView *tabBar = self.tabBarController.tabBar; NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(tabBar); NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[tabBar]-|"选项:0 指标:nil 视图:viewsDictionary]; [self.view addConstraints:constraints];
    • 对不起,你真的这么做了。所以问题出在其他地方,可能在您的上游视图中。您确定视图正在使用全屏模式吗?
    • Rikkles,我如何确保视图使用全屏模式?看起来可能不是。我在视图中添加了一个新的子视图(全宽和全高),然后将 tabBarController 添加到其中。它有效,但系统给出了运行时约束异常。
    • 那么您可能会触发不需要的约束。检查这个 superview 的约束。
    【解决方案2】:

    一般情况下,tabBarController 可以用作rootViewController
    判断用户登录是否成功,切换rootViewController = tabBarController

    【讨论】:

    • 我需要 rootViewController 作为导航控制器,以便用户可以从 taskDetailsViewController(UITabBarController) 导航回 tasksViewController(Table View)
    猜你喜欢
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多