标签: uiappearance

appearanceWainContainedIn在Swift中

我正在尝试将我的应用程序转换为Swift语言.

我有这行代码:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
                     setTitleTextAttributes:textDictionary
                                   forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

如何将其转换为Swift?

Apple的文档中,没有这样的方法.

ios uiappearance swift

124
推荐指数
4
解决办法
4万
查看次数

如何使用iOS5外观API在UINavigationBar中设置标题的字体和颜色?

我有一个多个视图控制器,我想将所有字体颜色设置为红色.

 [[UINavigationBar appearance] setFont:[UIFont boldSystemFontOfSize:12.0]];
Run Code Online (Sandbox Code Playgroud)

抛出一个无法识别的选择器错误.

请提供代码,以帮助解决以下问题.

uinavigationbar ios5 uiappearance

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

Swift中的外观代理/ UI_APPEARANCE_SELECTOR?

Apple文档说明:

要参与外观代理API,请使用UI_APPEARANCE_SELECTOR在标头中标记外观属性选择器.

在Objective-C中,可以使用以下方法注释属性UI_APPEARANCE_SELECTOR:

@property (nonatomic, strong) UIColor *foregroundColor UI_APPEARANCE_SELECTOR;
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Swift中做同样的事情?

uikit uiappearance swift

47
推荐指数
2
解决办法
7090
查看次数

自定义UIDatePicker for iOS7的文本颜色(就像Mailbox一样)

我陷入了最令人沮丧的困境.我上下研究过,可以清楚地看到Apple不希望我们篡改iOS 7.好吧,我想篡改.而且,Mailbox的团队清楚地知道如何做到这一点并获得批准.

我想要实现的主要是将标签颜色更改为白色.

邮箱UIDatePicker

我的第一个想法是他们使用的是模仿UIDatePicker的自定义UIPickerView,但我不认为是这种情况.

我放大了一个小片段,发现了正常UIDatePicker(黑线)的残余以及字母"W"上的剪辑.

邮箱UIDatePicker片段

现在我已经高高低调了.做了一些运行时黑客攻击,与UIAppearance混淆,甚至挖到一些私有API只是为了看看这是否可行.

我接近,非常接近,但它使用了私有API,如果你滚动得足够快,标签会再次变黑.

如果没有a)违反规则或b)花费无数小时重新实现UIDatePicker,我完全不知道如何做到这一点.

邮箱,告诉我你的秘密!如果其他人有任何建议(我的意思是任何建议),请告诉我.

此外,这是我得到的最接近的:

到目前为止如此接近

uidatepicker uipickerview uikit ios uiappearance

36
推荐指数
4
解决办法
2万
查看次数

如何将UIAppearance代理属性应用于UILabel?

在尝试将UIAppearance代理样式应用于UILabel类代理时,我得到了不可靠的结果.例如,以下工作正如我所期望的那样:

[[UILabel appearance] setFont:[UIFont fontWithName:SOME_FONT size:SOME_SIZE]];
[[UILabel appearance] setShadowColor:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)

但是,设置textColor不起作用:

[[UILabel appearance] setColor:[UIColor greenColor]];
Run Code Online (Sandbox Code Playgroud)

确实有效.有点.它有点不可靠,导致任何特定于实例的调用setTextColor:被忽略.

将UIAppearance样式应用于UILabel的正确方法是什么?

uilabel ios uiappearance

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

titleTextAttributes iOS 7中的UIAppearance字体

我正在使用UIAppearance将字体应用于UINavigationBar和UIBarButtonItem,我遇到了问题.我运行了这段代码:

[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] 
setTitleTextAttributes:
@{NSFontAttributeName : [UIFont fontWithName:@"My_Font" size:17.0]} 
forState:UIControlStateNormal];

NSLog(@"%@", [[UIBarButtonItem appearanceWhenContainedIn:
[UIToolbar class], nil] titleTextAttributesForState:UIControlStateNormal]);
Run Code Online (Sandbox Code Playgroud)

并且iOS 7上的日志结果是:

(null)
Run Code Online (Sandbox Code Playgroud)

iOS 6中的结果是:

{
    NSFont = "<UICFFont: 0x1d897a80> font-family: \"My_Font\"; font-weight: normal; font-style: normal; font-size: 17px";
}
Run Code Online (Sandbox Code Playgroud)

我在iOS 7文档中找不到任何表明这不起作用的内容,有其他人有这个问题吗?

编辑1

我实际上已经解决了[UINavigationBar appearance]这个问题,我将点大小设置为0,以便将字体设置为默认的navbar/barButtonItem大小,如NSString UIKit Additions Reference中所述,但这显然不再适用于iOS 7.相反,将磅值设置为0将返回系统字体.

我仍然无法设置titleTextAttributes

[UIBarButtonItem appearanceWhenContaintedIn:[UIToolbar class], nil]]

uikit uibarbuttonitem ios uiappearance ios7

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

自定义左右UISegmentedControl按钮

我正在尝试自定义以下分段控件,第一个按钮使用左图像,第二个按钮使用右图像.我怎么用UIAppearance做到这一点?

我想更改以下segmentedControl:

在此输入图像描述

类似下面的东西:

在此输入图像描述

我想使用自定义图像的原因是我可以更改按钮的角落.如果你看一下蓝色分段控制,它会更加平方(我的图像有它自己的角落).

我在考虑这样的事情,但没有用:

UIImage *leftImage = [[UIImage imageNamed:@"leftControl.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *rightImage = [[UIImage imageNamed:@"rightControl.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];

[[UISegmentedControl appearance] setBackgroundImage:leftImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault ];
[[UISegmentedControl appearance] setBackgroundImage:rightImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

iphone uisegmentedcontrol ios ios5 uiappearance

26
推荐指数
2
解决办法
2万
查看次数

如何在iOS7中更改UISegmentedControl边框的颜色?


如何在不更改文本颜色的情况下更改iOS7中分段控制器的边框颜色?


如果我可以按原样保持线段之间的线(即与文本颜色相同),那将是理想的,但如果边框颜色更改意味着更改此线,那么也可以.

另请注意,文本(以及段之间的线条)具有设置的颜色
[segmCtrl setTintColor:choosenTintColor]

cocoa-touch uisegmentedcontrol ios uiappearance ios7

25
推荐指数
2
解决办法
4万
查看次数

自定义容器控制器:transitionFromViewController:在动画之前查看未正确布局

这既是一个问题,也是一个部分解决方案.


*示例项目:

https://github.com/JosephLin/TransitionTest


问题1:

使用时,过渡动画开始时,不会显示transitionFromViewController:...toViewControllers 完成的布局viewWillAppear:.换句话说,预布局视图在动画期间显示,并且其内容在动画之后捕捉到布局后位置.

问题2:

如果我自定义导航栏的背景UIBarButtonItem,则条形按钮会在动画播放前显示错误的大小/位置,并在动画结束时捕捉到正确的大小/位置,类似于问题1.


为了演示这个问题,我做了一个裸骨的自定义容器控制器来执行一些自定义视图转换.它几乎是一个UINavigationController副本,它在视图之间进行交叉消解而不是推送动画.

'Push'方法如下所示:

- (void)pushController:(UIViewController *)toViewController
{
    UIViewController *fromViewController = [self.childViewControllers lastObject];

    [self addChildViewController:toViewController];
    toViewController.view.frame = self.view.bounds;

    NSLog(@"Before transitionFromViewController:");
    [self transitionFromViewController:fromViewController
                      toViewController:toViewController
                              duration:0.5
                               options:UIViewAnimationOptionTransitionCrossDissolve
                            animations:^{}
                            completion:^(BOOL finished) {
                                [toViewController didMoveToParentViewController:self];
                            }];
}
Run Code Online (Sandbox Code Playgroud)

现在,DetailViewController(我正在推动的视图控制器)需要布局其内容viewWillAppear:.它无法进行,viewDidLoad因为它当时没有正确的帧.

出于演示的目的,DetailViewController将其标签在不同的位置和颜色viewDidLoad,viewWillAppear以及viewDidAppear:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%s", __PRETTY_FUNCTION__);
    CGRect rect = self.descriptionLabel.frame;
    rect.origin.y = 50;
    self.descriptionLabel.frame …
Run Code Online (Sandbox Code Playgroud)

xcode uiviewcontroller ios uiappearance

24
推荐指数
1
解决办法
9089
查看次数

respondsToSelector因外观代理而失败

我想检测的iOS 6特定外观的方法,通过运行respondsToSelector[UIBarButtonItem appearance].但是,NO无论我指定哪个选择器,它总是为我返回:

// Should show NOPE in iOS 5, YEP in iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)] ? @"YEP" : @"NOPE"); 

// Should show YEP in both iOS 5 and iOS 6. Shows NOPE always
NSLog(@"%@", [[UIBarButtonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)] ? @"YEP" : @"NOPE"); 
Run Code Online (Sandbox Code Playgroud)

实际上使用这些方法在他们各自的iOS版本上工作正常,但我似乎无法检测到哪一个可供我使用.那我该怎么做呢?

xcode objective-c ios5 uiappearance ios6

20
推荐指数
1
解决办法
1452
查看次数