如何更改应用程序中文本字段类型的所有对象?

时间:2015-10-14 05:32:38

标签: ios objective-c

是否可以在我的应用内轻松更改特定类型的所有对象? 例如,更改所有UILabel的字体/颜色或在setAdjustsFontSizeToFitWidth:上应用UILabels函数。

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码更改textfield或任何对象的宽度,颜色,大小。

 for(UITextField *txt in self.view.subviews)
    {
        if([txt isKindOfClass:[UITextField class]])
        {
            //here do your work
            txt.frame=CGRectMake(0, 50, 100, 100);//set size,color anything your want.
        }
    }

制作你想要使用的对象类。

答案 1 :(得分:0)

尝试使用以下require_tree .类别:

<强>的UIView + MakeChange.h

UIView

<强>的UIView + MakeChange.m

@import UIKit;

@interface UIView (MakeChange)
    +(void)makeChangeInView:(UIView*)superview 
                  withBlock:(void(^)(__kindof UIView* view))block;
@end

您可以使用以下代码更改当前显示的#import "UIView+MakeChange.h" @implementation UIView (MakeChange) +(void)makeChangeInView:(UIView*)superview withBlock:(void(^)(__kindof UIView* view))block { if(!block || !superview) return; for(UIView* subview in superview.subviews) { // Make changes to all subviews recursively [self makeChangeInView:subview withBlock:block]; if([subview isKindOfClass:self.class]) block(subview); } } @end 的字体/颜色:

UILabel
  • 显然,同一类别也可以用于任何UIView子类([UILabel makeChangeInView:[[[UIApplication sharedApplication] windows] firstObject] withBlock:^(UILabel* label) { [label setTextColor:[UIColor redColor]]; [label setFont:[UIFont systemFontOfSize:10.0]]; }]; UITextField等。)
  • 谨慎使用它,特别是如果您的UI很复杂 - 所有工作都是在UI线程上完成的(没有其他简单的选择),并且您不想长时间阻止它...对于相同的原因,尽量避免在主应用程序窗口中使用它(如我的例子中所示)。