我有 aUILabel
和 aUIButton
以及动态变化的文本,除了UILabel
,我想将它们显示为单个标签,并且应该在单行上居中对齐,但两者的工作方式不同,因为我在图片中显示下划线文本“无麸质美食家”有与文本不同的可点击功能Found by
。我不知道如何完成这项任务,如果图片中的按钮文本“无麸质美食家”会变得很长,那么我如何将标签向左移动,如图所示。提前致谢。
问问题
447 次
4 回答
2
尝试这个:
NSString *text1 = @"Found by "; //text of your uilabel
CGSize constraint1 = CGSizeMake(320, 2000); //suppose your total width of superview is 320
CGSize size1 = [text1 sizeWithFont:[UIFont fontWithName:@"ArialMT" size:12.0] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; //font which are used in your "Found by" label
NSString *text2 = @"The Gluten free foodie"; //text of your uibutton
CGSize constraint2 = CGSizeMake(320, 2000);
CGSize size2 = [text2 sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:12.0] constrainedToSize:constraint2 lineBreakMode:UILineBreakModeWordWrap]; //font which are used in your "The Gluten free foodie" button
float finalwidth = size1.width + size2.width + 2;
float centerx = 320 - finalwidth; //suppose your total width of view is 320
centerx = centerx/2.0;
lblFoundBy.frame = CGRectMake(centerx, 20, size1.width, size1.height);
btnThe.frame = CGRectMake(centerx + size1.width + 2, 20, size2.width, size2.height);
- 根据标签的文本查找标签的宽度
- 根据按钮的标题查找按钮的宽度
- 获取标签、按钮和这两者之间空间的总宽度。
- 从您的 uiview(按钮和标签的超级视图)宽度中减去总宽度(假设为 320)。
- 最后你会得到额外的空间。之后,这个额外的空间除以 2。
- 最后,基于该设置标签和按钮的框架(x 位置很重要)。
于 2013-05-14T12:30:28.147 回答
1
如果这个应用程序适用于 ios6 或更高版本在这种情况下你可以这样做......
NSString *infoString=@"Founded by The Gluten free foodie";
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];
NSInteger _stringLength=[infoString length];
// ------------------ Give your range for underline
[attString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:NSMakeRange(10, _stringLength-10)];
label.attributedText = attString;
[label setBackgroundColor:[UIColor clearColor]];
// ---------------- Give frame according to your text -------
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(70, 15, 195, 35);
[btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
[label addSubview:btn];
[label setUserInteractionEnabled:YES];
在这张图片中看到
于 2013-05-14T12:37:40.940 回答
0
您可以尝试使用 TTTAttributedLabel ( https://github.com/mattt/TTTAttributedLabel ) 或其他可以支持链接的自定义标签,您可以使用链接属性The Gluten free foodie
来显示它加下划线。
于 2013-05-14T12:24:27.390 回答
0
您可以使用两个标签。第一个的宽度将是固定的。使用以下方法计算第二个宽度。
[[label text] sizeWithFont:label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
浏览苹果文档并了解它是如何工作的。获得宽度后,您可以为两者提供框架。两个标签的宽度之和为 160/2,第一个标签为 x。第一个标签的 x + 宽度为第二个标签提供 x。
于 2013-05-14T12:27:45.590 回答