UITabBarController 的子类,替换了 TabBar 并且有显示问题

发布于 2024-08-18 06:32:39 字数 738 浏览 3 评论 0原文

我有一个使用标准 UITabBarController 构建的 iPhone 应用程序。该应用程序是使用标准 XCode 项目模板创建的。

现在,我需要将 UITabBar 更改为看起来非常不同。我决定采取的方法是这样的:

在我的 AppDelegate 中:

for (UIView *view in tabBarController.view.subviews) {  
    if([view isKindOfClass:[UITabBar class]]) {
        view.hidden = YES;
        break;
    }
}

这可以使选项卡栏隐藏。接下来,我对 UITabBarController 进行了子类化,并添加了一个带有一些自定义组件的 UIToolbar。在我的子类 UITabBarController 中,我设置了代码,这样当选择我的自定义对象之一时,代码只需调用 [self setSelectedIndex:n] 即可更新 UI。

所以我基本上有一个 UITabBarController 但我通过一个新的 UI 来控制它。

问题是我的新组件没有正常的 UITabBar 高,并且 UITabBarController 似乎没有自动调整我的视图大小。我实际上期望这种行为,但我不知道如何更改 UITabBarController 的“内容框架”。有什么想法吗?

I have an iPhone app which was built using a standard UITabBarController. This app was created using the standard XCode project template.

Now, I have a requirement to change the UITabBar to look very different. The approach I decided to take was like this:

in my AppDelegate:

for (UIView *view in tabBarController.view.subviews) {  
    if([view isKindOfClass:[UITabBar class]]) {
        view.hidden = YES;
        break;
    }
}

This works to make the tab bar hidden. Next, I subclassed UITabBarController and I add a UIToolbar with a few custom components. In my subclassed UITabBarController I have my code set up so that when one of my custom objects is selected, the code simply calls [self setSelectedIndex:n] to update the UI.

So I basically have a UITabBarController but I am controlling it through a new UI.

The problem is that my new components aren't quite as tall as the normal UITabBar and the UITabBarController seems to be not resizing my views automatically. I actually would expect this behavior, but I can't figure out how to change the "content frame" of a UITabBarController. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤凫 2024-08-25 06:32:39
  1. 检查 autoresizingMask 属性。
  2. 您是否期望它们像选项卡栏一样工作,通常通过向 viewControllers 视图添加项目来实现?
  1. Check the autoresizingMask property.
  2. Are you expecting them to work as tab bars usually do by adding items to the viewControllers view?
白色秋天 2024-08-25 06:32:39

使用以下代码解决:(

[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 436)];

顺便说一句,我知道这段代码有问题,并且会在 iPad 或其他设备上困扰我)。

Resolved with the following code:

[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 436)];

(I know this code has issues btw and will come back to haunt me on the iPad or other devices).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文