在我的iOS应用程序中,我想要UILabel,它可以在大多数屏幕上使用动态文本。
所以我在我的Utility类中编写了一个方法,它创建了UILabel和相关的UIView,我也将文本设置为我想要的UILabel。 我使用这个Utility类方法在我想要的地方创建UILabel
但是,我面临的问题是我无法隐藏或删除此UILabel。
所以请给我你宝贵的建议......
提前致谢.....
+(void)drawLabel:(UIView *)view message:(NSString *)message
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
}
这是我在Utility类中编写的用于创建UILabel的方法。
[CACCustomMessageLabel drawLabel:self.view message:@"MY LABEL2"];
我就像上面那样使用它。
答案 0 :(得分:1)
您可以在实用程序类中创建这样的方法。
+(void)drawLabel:(UIView *)view message:(NSString *)message isHide:(BOOL)isHide
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
messageLabel.hidden = isHide;
}
这是我在Utility类中编写的用于创建UILabel的方法.Here是视图中隐藏和取消隐藏标签的isHide参数。
[uilabelUtility drawLabel:self.view message:@"Jaydip Godhani" isHide:YES];
这里的YES是隐藏您查看的标签。
答案 1 :(得分:1)
+(void)drawLabel:(UIView *)view message:(NSString *)message isHide:(BOOL)isHide
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
messageLabel.hidden = isHide;
}
完美地工作......
答案 2 :(得分:1)
使用UILabel的标签创建。
+(void)drawLabel:(UIView *)view message:(NSString *)message tag:(int)tagValue
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.tag = tagValue;
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
}
并且这样打电话。
[CACCustomMessageLabel drawLabel:self.view message:@"MY LABEL2" tag:100];
使用UIlabel的给定标记在UILabel中查看get。
UILabel *yourLbl = (UILabel)[self.view viewWithTag:123];
yourLbl.hidden = YES;
[yourLbl removeFromSuperview];
答案 3 :(得分:1)
您之后无法隐藏或删除该标签,因为您没有引用该标签。您的drawLabel方法应该返回它创建的Label的实例,将其保存为属性,稍后当您想要修改它时,您可以通过属性访问它。
在ViewController中,您有一个标签属性:
@property (nonatomic, strong) UILabel *label
在自定义类中,您可以使用factory方法创建UILabel实例。虽然我会更清楚地更改名称。您不应该在此方法中将标签添加到视图中,该方法是viewController的作用:
+(UILabel *)labelWithMessage:(NSString *)message
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setTextAlignment:NSTextAlignmentCenter];
return messageLabel;
}
在ViewController中调用你的方法:
self.label = [CACCustomMessageLabel drawLabel:self.view message:@"MY LABEL2"];
[self.view addSubview:self.label]
self.label.center = self.view.center;
现在你在ViewController中引用了你的标签,你可以隐藏它或从它的超级视图中删除它:
[self.label removeFromSuperview]
其他信息
请尽量避免使用UIView标记。遵循以下规则:
有关您为什么不应该过度使用标记属性的更多信息,请here
答案 4 :(得分:1)
+(void)drawLabel:(UIView *)view message:(NSString *)message tag:(int)tagValue
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.tag = tagValue;
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
}
工作完美..试试这个
答案 5 :(得分:0)
只需设置标签的标记值
即可+(void)drawLabel:(UIView *)view message:(NSString *)message tag:(int)tagValue
{
UILabel *messageLabel = [[UILabel alloc]init];
messageLabel.tag = tagValue;
messageLabel.frame = CGRectMake(0, 0, 320, 30);
[messageLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
messageLabel.text = message;
[messageLabel setCenter:view.center];
[messageLabel setTextAlignment:NSTextAlignmentCenter];
[view addSubview:messageLabel];
}
创建像
这样的标签[CACCustomMessageLabel drawLabel:self.view message:@"MY LABEL2" tag:123];
然后在VC中的任何地方访问它,并按如下方式隐藏或删除
UILabel *label = (UILabel)[self.view viewWithTag:123];
label.hidden = YES;
[label removeFromSuperview];