标签: uitabbaritem

UITabBarItem.title与UINavigationController.title

我分配了一个带标题的UITabBarItem(initWithTitle)并将其连接到UINavigationController.

我发现如果导航控制器的根视图控制器有自己的标题,那么该标题将永久替换标签栏项目上指定的标题.例如,如果标签栏项目的标题设置为ONE并且导航控制器的根视图控制器标题设置为TWO,则标签栏项目始终显示TWO,而不是ONE.使标签栏项目显示为ONE的唯一方法是完全省略导航控制器的根标题.

问题是,我希望每个都有不同的标题,因为标签栏项并不总是通向导航控制器的根视图控制器 - 它显示了推送到导航控制器的最后一个视图控制器,这意味着根的标签栏上的标题可能不合适.另一方面,我不能在导航控制器中丢弃标题,因为它在导航栏上使用.Catch 22.

有没有解决的办法?

iphone xcode uinavigationcontroller uitabbaritem

5
推荐指数
1
解决办法
3293
查看次数

自定义UITabBarItem没有标题标签

我正在尝试创建一个UITabBar,我将使用外观API进行自定义.我一直试图从UITabBarItem中删除标题标签并调整图像大小以使其居中.如果您只删除标题文本,则图像下方和栏的底部将显示空白区域.

有没有人知道如何制作没有标题的UITabBarItem?

uitabbaritem uitabbar ios

5
推荐指数
2
解决办法
5477
查看次数

为什么以编程方式选择tabbarController索引不会调用委托方法

当我们触摸tabbarcontroller的tabbaritem时,会调用委托方法:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
Run Code Online (Sandbox Code Playgroud)

但是当尝试以编程方式执行相同的操作时,即

[self.tabbarController setSelectedIndex:selectedIndexNo];
Run Code Online (Sandbox Code Playgroud)

要么

[self.tabBarController setSelectedViewController:[self.tabBarController.viewControllers objectAtIndex:0]];
Run Code Online (Sandbox Code Playgroud)

委托方法不会被调用.这是什么原因?

delegates uitabbarcontroller uitabbaritem uitabbar

5
推荐指数
2
解决办法
1852
查看次数

将控制器添加到UITabBarController,而标签栏中没有出现新项目

我有一个UITabBarController作为其主控制器的应用程序.

当用户点击一个按钮(不在标签栏,只是其他一些按钮)时,我想在我的UITabBarController中添加新的UIViewController并显示它,但我不希望新的UITabBarItem出现在标签栏中.如何实现这样的行为?

我试图将tabBarController.selectedViewController属性设置为不在tabBarController.viewControllers数组中的视图控制器,但没有任何反应.如果我将视图控制器添加到tabBarController.viewControllers数组新项目自动出现在选项卡栏中.

更新

感谢Levi,我扩展了我的标签栏控制器来处理不存在的控制器.viewControllers.

@interface MainTabBarController : UITabBarController

/** 
 * By setting this property, tab bar controller will display
 * given controller as it was added to the viewControllers and activated
 * but icon will not appear in the tab bar.
 */
@property (strong, nonatomic) UIViewController *foreignController;

@end


#import "MainTabBarController.h"

@implementation MainTabBarController

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
  self.foreignController = nil;
}

- (void)setForeignController:(UIViewController *)foreignController
{
  if (foreignController) {
    CGFloat reducedHeight …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uitabbarcontroller uitabbaritem ios

5
推荐指数
1
解决办法
3614
查看次数

如何以编程方式添加 UITabBarItem?

在我的应用程序中,我添加UITabBarController了“Storyborad”。但现在我想以UITabBarItem编程方式添加。假设有 5 个按钮,每当用户单击该按钮时,UITabBarController就会调用my 。“标签栏”中共有 5 个标签。例如:

选项卡名称:项目 1、项目 2、项目 3、项目 4、项目 5。按钮名称:item1、item2、item3、item4、item5。

假设用户单击 item1 按钮UITabBarcontroller被调用。现在用户应该无法在“tabbarcontroller”中看到 item1 选项卡,他应该能够看到重置的“tabBaritem”。

谁能帮我解决这个问题?如何以编程方式做到这一点?

谢谢。

尼勒什

objective-c uitabbarcontroller uitabbaritem ios ios7

5
推荐指数
1
解决办法
5545
查看次数

如何减小UI标签栏项目图像的大小以使其适合标签栏?

这是一个iPhone应用程序的标签栏,使用Xcode 6.3中的Swift编码语言

我的问题是我想在我的一个视图控制器的标签栏中添加一个图像,但是图像太大了.我最初的解决方案是使用预览手动减小图像的大小,但这样做后分辨率很差.是否有一行代码可以放入app委托,可以在不更改源文件的情况下调整图像大小?有谁知道解决这个问题的任何其他方法?

手动调整大小的低分辨率图像的图片

原始全分辨率图像的图片,超大尺寸

第二个图像是目标,但没有分辨率损失.

xcode uitabbaritem uitabbar ios swift

5
推荐指数
1
解决办法
1万
查看次数

无法在 UITabBarItem 上启用字母间距(字距调整)

我正在尝试在 UITabBarItem 标题标签上启用文本字距调整(增加字母间距)。但是为 UITabBarItem 提供 NSKernAttributeName 属性没有任何区别。然而,其他两个属性正在起作用:NSForegroundColorAttributeName、NSFontAttributeName。我已经尝试过系统字体和另一种字体:SFUIDisplay-Regular。

是的,我也尝试使用 UIControlStateNormal 和 UIControlStateSelected。

这是代码:

for (UITabBarItem *item in self.tabBar.items)
{
[item setTitleTextAttributes: @{
                    NSKernAttributeName: @(4.0f), /* does nothing */
                    NSForegroundColorAttributeName: [AppStyle whiteColor],
                    NSFontAttributeName: font
                }
                forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

NSKernAttributeName 属性没有任何效果。

当应用程序加载时,我也尝试在 Appearance 中执行此操作,如下所示:

    NSDictionary *attributes = @{
                             NSKernAttributeName: @(4.0f) /* does nothing */
                             };
[[UITabBarItem appearance] setTitleTextAttributes: attributes
                                         forState: UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes: attributes
                                         forState: UIControlStateSelected];
Run Code Online (Sandbox Code Playgroud)

这也什么都不做。

我能够让 NSKernAttributeName 工作的唯一地方是在 UILabel 上使用 setAttributedText 时。

你们知道为什么设置其他标题文本属性适用于 UITabBarItem,但 NSKernAttributeName 不适用吗?

objective-c nsattributedstring kerning uitabbaritem letter-spacing

5
推荐指数
1
解决办法
908
查看次数

自定义文本颜色和UITabBarItem的字体导致怪异导致swift

我想改变我的文字UITabBarItems,并使用问题,比如这个.第二个答案对我很有用,除非我尝试调整字体UITabBarItem.此代码段生成所选文本的预期结果为白色,未选中的项目为浅灰色:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState:.Normal)

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:.Selected)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,如果添加:

UITabBarItem.appearance().setTitleTextAttributes([NSFontAttributeName:UIFont(name: "American Typewriter", size: 13)!], forState: .Selected)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

由于某种原因,当文本被选中和未被选中时,文本变为黑色,并且字体保持不变.

奇怪的是,如果我更改.Selected.Normal最后一个片段,那么所选文本将变为白色,文本将与代码中的字体匹配.

在此输入图像描述

UITabBarItem.appearance().setTitleTextAttributes([NSFontAttributeName:UIFont(name: "American Typewriter", size: 13)!], forState: .Normal)
Run Code Online (Sandbox Code Playgroud)

这几乎是完美的,但是未选择的文本现在没有变化.我不确定我做错了什么或这是一个错误,但如果有任何其他方法来完成这项任务,我很乐意听到它.

基于dfri的评论,我试过这个:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor(),
        NSFontAttributeName : [NSFontAttributeName:UIFont(name: "American Typewriter", size: 13)!]], forState:.Selected)

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.whiteColor(),
        NSFontAttributeName : [NSFontAttributeName:UIFont(name: "American Typewriter", size: 13)!]], forState:.Normal)
Run Code Online (Sandbox Code Playgroud)

现在应用程序崩溃了.错误说:

无法识别的选择器发送到实例0x7fa6d9461ef0

这对我没有任何意义

fonts uitabbaritem swift ios9

5
推荐指数
1
解决办法
5472
查看次数

滚动到顶部UITableView,双击UITabBarItem

我想在他们的列表中模拟twitter或instagram的行为:

在UITabBarItem中双击时,列表将滚动到顶部.有人知道我该怎么做?我的UITabBarController中有4个项目,所有这些都是列表,所以我想为所有人做这件事.

问题是当我在mi列表的推送视图中点击条形项时,此函数在获取导航的根视图控制器之前调用并检测双击.

我希望能解决我的问题.

var previousController: UIViewController?

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    if previousController == viewController{
        if let navVC = viewController as? UINavigationController, vc = navVC.viewControllers.first as? HomeViewController {
            vc.tableBusinessList.setContentOffset(CGPointZero, animated: true)
            print("same")
        }
    }else{
        print("No same")
    }
    previousController = viewController
}
Run Code Online (Sandbox Code Playgroud)

这种行为是不正确的.当我使用标签栏项目弹出视图时,根视图位于单元格0上

在此输入图像描述

uitabbarcontroller uitableview uitabbaritem ios swift

5
推荐指数
1
解决办法
2675
查看次数

如何在没有视图控制器的情况下快速创建 uitabbar 项目

所以我的问题是我正在创建一个没有故事板的 UITabBarController 并且我被困在如何在没有 Viewcontroller 的情况下创建一个 UITabBar 项目。因为我想要做的是我的 UITabBarItem 的第二个项目是一个不呈现视图控制器的动作。

uitabbarcontroller uitabbaritem ios swift

5
推荐指数
1
解决办法
3497
查看次数