【问题标题】:How can I write one method to control all of the labels or textView?如何编写一种方法来控制所有标签或 textView?
【发布时间】:2015-02-18 11:17:03
【问题描述】:

我在不同的页面中有很多LabelsTextViewTextField。如何编写一个方法来控制所有标签或 textView 的字体类型、字体大小,或者检查 6 个文本字段是否为空?有办法吗?而不是像这样写长代码

 if ((txtfldFirst.text && txtfldFirst.text.length && txtfldLast.text && txtfldLast.text.length && txtfldPhone.text && txtfldPhone.text.length && txtfldEmail.text && txtfldEmail.text.length && txtViewComment.text && txtViewComment.text.length) )


[txt1 setFont:[UIFont fontWithName:@"GalaxiePolaris-Book" size:16.0]];
[txt2 setFont:[UIFont fontWithName:@"GalaxiePolaris-Book" size:16.0]];
[txt3 setFont:[UIFont fontWithName:@"GalaxiePolaris-Book" size:16.0]];
[txt4 setFont:[UIFont fontWithName:@"GalaxiePolaris-Book" size:16.0]];
...
.....

【问题讨论】:

  • 相反,为标签、文本视图和文本字段创建一个子类会更加高效和冗余。
  • 你能告诉我一个方法吗?如果我创建了一个子类,我是否要将标签、文本视图和文本字段中的每一个连接到该类?我不明白。 @Kampai
  • 例如:创建UILabel的子类,在initWithFrame:方法中添加字体、大小、颜色等所有属性。所以现在您只需要创建该子类的对象,所有属性都将被覆盖到该标签。
  • 好的,我试试。 @Kampai

标签: ios uitextfield uilabel uitextview


【解决方案1】:

创建一个子类。

New file -> iOS -> Source -> Cocoa Touch Class -> 
-> MyLabel; subclass of UILabel

在.m文件中写入:

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = super initWithFrame:frame]) {
        self.font = [UIFont fontWithName:@"GalaxiePolaris-Book" size:16.0];
    }

    return self;
}

然后在你的控制器或视图中而不是

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];

写:

MyLabel *label = [[MyLabel alloc] initWithFrame:CGRectZero];

【讨论】:

  • 创建 MyConfigs 文件并在那里声明 UIFont 也是一个很好的模式。这会将所有这些可配置的东西放在一个地方。
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2019-08-18
  • 2011-05-12
相关资源
最近更新 更多