在我的应用程序中,我试图让UILable时间文本以类似于WhatsApp的方式对齐,如果UITextView消息文本的最后一句话太长,则时间将被推送到下一个线。所以我实际上是想根据UITextView的消息框调整UILabel的时间。
This is a text message. 7:16PM
This is a longer
text message. 7:15PM
This is an even longer
text message till end.
7.15PM
我能想到的一种方法是使用UITextView的类并抓住最后一行的长度并计算文本宽度,与UITextView的宽度相比,知道它是否超过但没有运气。有什么办法吗?
答案 0 :(得分:0)
这是我写的代码解决了我的问题。感谢格雷格指出我正确的方向。
+ (BOOL)didTextMoveToNewline:(NSString *)text previousSize:(CGSize)previousSize {
UIFont *messageBubbleFont = [UIFont systemFontOfSize:14.0f];
float maximumTextWidth = 188;
NSString *finalText = [[NSString alloc] init];
finalText = [NSString stringWithFormat:@"%@ 10:00PM ", text];
CGRect stringRect = [finalText boundingRectWithSize:CGSizeMake(maximumTextWidth, CGFLOAT_MAX)
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:@{ NSFontAttributeName : messageBubbleFont }
context:nil];
CGSize stringSize = CGRectIntegral(stringRect).size;
if (stringSize.height > previousSize.height)
return YES;
else
return NO;
}
答案 1 :(得分:-1)
黑客就是在每条消息结束时自动添加一个空格。
trayicon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
frame.setExtendedState(JFrame.NORMAL);
frame.setVisible(true);
} catch (Exception ex) {
Logger.getLogger(TrayControl.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
然后让时间总是与最后一行重叠。如果空格量正确,则文本和时间永远不会触及。