如何从 UILabel 中删除 UIAppearance 设置?

Posted

技术标签:

【中文标题】如何从 UILabel 中删除 UIAppearance 设置?【英文标题】:How do I remove UIAppearance settings from UILabel? 【发布时间】:2017-07-14 03:09:48 【问题描述】:

如何删除UILabel中已经设置的UIAppearance设置? 或者如何更新已经设置好的 UIAppearance?

我创建了一个自定义的 UILabel 方法,如下所示。

标题

- (void)setAppearanceFont:(UIFont *)font UI_APPEARANCE_SELECTOR;

实施

- (void)setAppearanceFont:(UIFont *)font

    _invokeCount += 1;

    NSLog(@"invokeCount: %ld", _invokeCount);
    self.font = font;

如果我设置了两次外观,setAppearanceFont 方法被调用了两次。

// set appearance
[[MyAppearanceLabel appearance] setAppearanceFont:font];
....
....
// set appearance from another timing
[[MyAppearanceLabel appearance] setAppearanceFont:font];

// show label
MyAppearanceLabel label* = [[MyAppearanceLabel alloc] 
                               initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.view addSubview:label]; // <= invoked twice here!!

我想确保 setAppearance 方法只被调用一次。

【问题讨论】:

什么叫addSubview:label两次? ios 在 addSubView 时调用 setAppearanceFont:(UIFont *)font 方法两次。 避免两次调用[[MyAppearanceLabel appearance] setAppearanceFont:font]; 对您来说不是最简单的事情吗? 我想动态改变应用程序的外观。因此,我想多次改变外观。 【参考方案1】:

在 swift 4 中,我执行以下操作(只需将其设置为 nil):

UILabel.appearance(whenContainedInInstancesOf: [UITableViewCell.self]).textColor = nil

【讨论】:

以上是关于如何从 UILabel 中删除 UIAppearance 设置?的主要内容,如果未能解决你的问题,请参考以下文章

从表格视图单元格中删除 UIlabel 文本

如何从 tableview 的单元格中删除 imageView,并重置单元格的高度

如何在 iOS 中删除 UILabel 中的插图

如何删除右侧的UILabel灰色边框?

如何从 UITableViewCell 中删除按钮?

如何存储所有选定的按钮值并在 UILabel 上显示它们?