Tag: uiappearance

为视图控制器根视图设置外观代理

在使用UIAppearance时,是否可以只定位到视图控制器的根视图? 我想setBackgroundColor为我的应用程序委托的所有我的控制器,但只想定位视图控制器上的直接视图。 谢谢。 详细说,每个UIViewController子类都有自己的UIView对象,你可以通过它的视图属性来调用。 这就是你在故事板上放置像UITableView,UITabBar等东西的视图。 我想代理只适用于直接的看法,因为UIKit中的一切都是UIView的子类。 这样做的目的是集中控制我的视图控制器的外观。 发生在我身上的可能是我应该只使用UIViewController的子类,但是我想还有另外一个地方可以做我刚刚描述的内容。

显示提示时出现iOS5 UINavigationBar背景图片问题

我在iOS 5中使用新的外观代理来为我的UINavigationBar添加背景图片。 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"ZSNavigationBG.png"] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"ZSNavigationLandscapeBG.png"] forBarMetrics:UIBarMetricsLandscapePhone]; 这工作正常,但我需要设置导航栏的提示属性。 当我这样做,导航栏的高度增加,我的背景图像不再填充导航栏垂直,所以看起来非常糟糕。 如何在使用自定义背景图像时提示高度变化?

使用UIAppearance更新后更新导航栏

我目前正在使用UIAppearance代理自定义iOS应用的导航栏背景图片。 有一个button可以在两种不同的模式之间切换,从而触发通知。 此通知将使用代理再次将背景更改为不同的图像。 我的问题是,只有当我去一个不同的控制器,我才能回到这个变化。 我无法强制更新控制器内的导航栏。 我已经在我的MainTabBarController中尝试了这个: – (void) onAppChangedMode: (NSNotification*)notif { APP_MODE mode = (APP_MODE) [[notif object] integerValue]; // change navigation bar appearance [[UILabel appearance] setHighlightedTextColor:[UIColor redColor]]; [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:(mode == 0 ? @"navbar.png" : @"navbar2.png")] forBarMetrics:UIBarMetricsDefault]; // trying to update for (UIViewController* vc in self.viewControllers) { [vc.navigationController.navigationBar setNeedsDisplay]; } } 但没有什么…它不工作。 任何想法如何实现它? 谢谢!

iOS – UIAppearance appearanceWhenContainedIn的问题

我正在为我的导航栏设置一个图像,如下所示: [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault]; 然后我不想这个图像MFMessageComposeViewController类,所以我排除它这样做: [[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 但它没有任何作用(导航栏仍然是我的图像在MFMessageComposeViewController里面)。 我在这里错过了什么?

MFMessageComposeViewController外观iOS 7

我有一个外观代理,在UINavigationBar barTintColor属性设置为绿色 [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:54./255 green:165./255 blue:53./255 alpha:1]]; 根据需要我重写这个使用appearanceWhenContainedIn: [[UINavigationBar appearanceWhenContainedIn:[INFSearchViewController class], nil] setBarTintColor:[UIColor colorWithWhite:0.80 alpha:1]]; 这工作正常。 但是,当我介绍一个MFMessageComposeViewController它遵守UINavigationBar代理,如下所示。 这显然看起来很可怕,我宁愿MFMessageComposeViewController不坚持代理,但试图做 [[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBarTintColor:[UIColor whiteColor]]; 没有任何影响。 我应该采取什么行动?

iOS 5后退button大小

我正在使用iOS 5 UIAppearance协议来使用自定义的导航栏后退button。 不像其他方法,我发现,这是最好的,因为它保留了默认的后退buttonanimation和行为。 唯一的问题是,我不能改变它的大小或设置它不剪辑子视图 。 这是发生了什么事情: A是预期行为,B是默认样式,C是剪辑结果。 不幸的是,这不像设置UIBarButtonItem到clipsToBounds = NO那么简单。 有谁知道如何解决这个问题? 谢谢!

在iOS 7 UIBarButtonItem外观麻烦,这可能是一个苹果的错误?

我回头看了一篇文章,这里是: iOS 6中的用户界面自定义 它显示了iOS 6的自定义。由于我已经写了使用该技术的应用程序的文章,它非常简单,没有魔法。 但是,我需要更新我的应用程序之一,并在iOS 7下无法正常工作。 看来UIBarButtonItems的定制在第一次出现视图的时候不起作用。 如果我解雇了观点,然后呈现它一切正常。 这里显示的是: 第一次看到的是: 第二次: 我在他的例子中看到了这个问题,我的代码和我写的一个testing应用程序。 代码如下: // Customizing the Back Bar Buttons UIImage * btBack_30 = [[UIImage imageNamed:@"btBack_30"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)]; UIImage * btBack_24 = [[UIImage imageNamed:@"btBack_24"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 5)]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:btBack_30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:btBack_24 forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone]; 正如你可以看到没有真正的魔法,很标准,但我找不到任何理由或解释为什么这不起作用的iOS 7中。代码得到执行- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary […]

iOS 7的UINavigationBar外观不工作的第一次…

我正在尝试更改iOS7应用程序中UINavigationBar的外观。 我正在做以下事情: – (void)viewDidLoad { [super viewDidLoad]; m_sNumberToCall = @""; UIBarButtonItem * btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconHome.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(btHomeTouched:)]; self.navigationItem.leftBarButtonItem = btn; self.navigationController.navigationBar.translucent = YES; [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; NSShadow * shadow = [[NSShadow alloc] init]; shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8]; shadow.shadowOffset = CGSizeMake(0, 1); [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: […]

UISegmentedControl和UIAppearance的怪异行为

我通过应用程序委托中的这些语句来设置分段控件的外观。 [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 结果很好。 当我select任何分段时,背景和分隔线设置正确(应用程序第一次启动时,默认select“分段”)。 当我select释放部分,你可以看到下面的一切看起来不错。 问题是,当我离开视图,然后回到视图(我存储选定的索引,并将其设置在viewDidLoad重新select段),分频器设置不正确的原因不明。 如果我点击AZ然后释放,它自行纠正。 只有当视图第一次加载时,才会出现此错误,并且选定的段是Release或AZ。 select“订单”并加载视图时,分隔线总是看起来很好。 图像大小:分隔符是2px宽(全部3个图像是相同的大小),每个背景是2px宽。 任何想法或指针将高度赞赏,我一直拉我的头发在过去10个小时试图find一个解决scheme没有可用。

UIAppearance不会对以编程方式创build的UILabels生效

我们已经扩展了UILabel,以便能够在我们的应用程序中为给定标签types的所有用途应用标准字体和颜色。 例如。 @interface UILabelHeadingBold : UILabel @end 在我们的AppDelegate中,我们应用这样的字体和颜色 [[UILabelHeadingBold appearance] setTextColor:<some color>]; [[UILabelHeadingBold appearance] setFont:<some font>]; 在我们的XIB中添加一个UILabel时,我们现在可以select类为UILabelHeadingBold的类,并且按照预期工作。 标签显示正确的字体和颜色,在我们的AppDelegate中指定。 但是,如果我们以编程方式创build标签,例如。 UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)]; [self.mainView addSubview:headingLabel]; UILabel没有得到应用的预期的字体/颜色。 我们必须手动应用这些属性。 有没有办法使UIAppearance能够在编程创build的UI元素上生效,还是只能在XIB中使用时才起作用?