有问题,需要为UIButton的标题指定一些文字。已将按钮换行模式设置为NSLineBreakByCharWrapping,以便字符串仅由每行末尾的字符分隔。但我需要在行的末尾插入连字符以显示单词的连续性。 继承人我试过的 -
// Initialize the button
titleButton.titleLabel.lineBreakMode = NSLineBreakByCharWrapping;
titleButton.titleLabel.backgroundColor = [UIColor yellowColor];
[titleButton.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]];
// Make the string here
NSMutableString *titleString = [[NSMutableString alloc] initWithString:@"abcdefghijklmnopqrs tuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"];
// Insert hyphens
int titleLength = [titleString length];
int hyphenIndex = 19;
while (hyphenIndex<titleLength) {
UniChar charatIndex = [titleString characterAtIndex:hyphenIndex];
if ((charatIndex - ' ') != 0) { // Check if its not a break bw two words
[titleString insertString:@"-" atIndex:hyphenIndex]; // else insert an hyphen to indicate word continuity
}
hyphenIndex += 19; //Since exactly 20 char are shown in single line of the button's label.
}
//Set the hyphenated title for the button
[titleButton setTitle:titleString forState:UIControlStateNormal];
[titleString release];
这是我能得到的最接近的。
非常感谢任何帮助。
答案 0 :(得分:0)
你的第二个单词的长度更多是行的长度(按钮的宽度),这就是为什么会发生这种情况。
答案 1 :(得分:0)
[String sizeWithFont:font constrainedToSize:Size lineBreakMode:LineBreakMode]
主要思想是获取初始字符串的一部分(如果断字则添加连字符),检查其宽度是否适合按钮的宽度。如果宽度较小,请尝试更大的部分,否则,如果适合 - 处理更多部分
答案 2 :(得分:0)
它为使用字符串提供了很好的可能性。
例如:
- (NSUInteger)lineBreakBeforeIndex:(NSUInteger)index withinRange:(NSRange)aRange
//Returns the appropriate line break when the character at the index won’t fit on the same line as the character at the beginning of the range.
答案 3 :(得分:0)
请参阅我的答案,了解如何使用NSParagraphStyle和NSAttributedString来获取用连字符打破的UILabel:https://stackoverflow.com/a/19414663/196358