- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道是否可以将 UIButton 放在一段文本的精确坐标上。
例如,我的 UILabel 有这个文本:
“没有帐户?登录”
在斜体内容中,我需要在上面放一个按钮,触摸这个按钮会触发一个打开登录 View 的 Action
做好这个功能非常重要,不用做任何事情就可以在其他语言中使用相同的功能:)
谢谢
最佳答案
我会回复我的回答,因为这可能对遇到同样问题的其他开发者有所帮助。
1:您需要实现 UITextViewDelegate 方法:- (BOOL)textView:shouldInteractWithURL:inRange:
实现很简单,基本上,你会在NSURL中比较接收到的链接。当我有很多链接时,我喜欢使用 NSURL 组件按主机进行比较,例如:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
NSString *urlScheme = URL.scheme;
NSString *host = URL.host;
if([urlScheme isEqualToString:@"myapp"])
{
if([host isEqualToString:@"/signin"])
[self.onSignRequest( self )];
}
return YES;
}
当用户触摸链接时将调用此方法。
2:创建两个 NSString
实例,一个用于字符串 "Don't have an account?"
,另一个用于字符串 “注册”
NSString *labelText = @"Don't have an account? ";
NSString *linkedText = @"Sign Up";
3:创建一个 NSMutableAttributedString
实例,将两个字符串连接起来:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:[AttributedText attributedStringWithText:[NSString stringWithFormat:@"%@%@", labelText, linkedText]
font:[UIFOnt systemFontOfSize:14.f]
color:[UIColor blueColor]]];
4:从之前创建的可变属性字符串为链接文本创建范围:
NSRange range = [[attributedString string] rangeOfString:linkedText];
5:创建一个字符串
5:为具有在步骤4
中创建的范围的可变字符串添加新的NSLinkAttributeName
[attributedString addAttribute:NSLinkAttributeName value:URLStringLink range:range];
6:使用 UILabel
的 attributedText
属性将可变字符串添加到 UILabel
_label.attributedText = attributedText;
7:设置标签的委托(delegate):
_label.delegate = textViewDelegate;
就是这样。我希望这对任何需要在 UILabel
干杯,
关于iOS:在 NSAttributedString 上添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17278169/
我对 Core Text 的行距一无所知。我正在使用 NSAttributedString 并在其上指定以下属性:- kCTFont属性名称- kCTParagraphStyleAttributeNa
我想显示 3 行 NSAttributedString。有没有办法根据宽度和行数确定所需的高度? 而且我不想创建 UILabel 来进行大小计算,因为我希望计算在后台线程中完成。 最佳答案 我想知道为
我想用另一个 NSAttributedString 替换 NSAttributedString 的子字符串(例如 @"replace")。 我正在寻找与 NSString 的 stringByRepl
我正在尝试在另一个文本中创建多行单独文本以实现以下文本样式。 我已经尝试使用下面的代码来实现目标,但是代码的第三部分产生了一个问题(中等字体) private func createLimit
我有一个 NSAttributedString 并希望在每个 “***” 处拆分它。所以实际上,我想在该字符串出现的任何地方分割一个 NSAttributedString 。结果应该类似于 NSAtt
尝试在 UITextView 中使用 NSAttributedString 显示上标/下标文本在 iOS13 中似乎已损坏 - 除非有人知道否则? 奇怪的是,如果我使用 UIFont systemFo
尝试在 UITextView 中使用 NSAttributedString 显示上标/下标文本在 iOS13 中似乎已损坏 - 除非有人知道否则? 奇怪的是,如果我使用 UIFont systemFo
我有一个富文本编辑器,用户可以在其中编辑字体、颜色等。模型将此信息作为 NSAttributedString 的实例保存在内存中。当我想存储此信息并写入磁盘时,我通过以下函数将属性字符串转换为 htm
这个问题在这里已经有了答案: Cannot convert value of type NSAttributedString.DocumentAttributeKey to .DocumentRea
我想将一个 html 字符串转换为 NSAttributedString,然后处理该字符串(更改颜色、字体大小、字体系列、背景-、前景色...),然后将字符串转换回来从 NSAttributedStr
为什么 NSAttributedString 不继承 NSString ? NSAttributedString 的父类为 NSObject 为什么? 最佳答案 为什么你希望它是 NSString 的
我们正在调用 NSAttributesString 的 initWithRTFD 将 NSData 转换为 attributedString。从 NSTextView 中,我们读取字符串并将其转换为
我想为标签设置样式。没有什么疯狂的,只是一些颜色,改变特定单词的字体大小,等等。我可以用 NSAttributedString 做到这一点,但是在 iOS 7 新引入的 TextKit 中这样做可能/
我正在尝试使用 RTFDFromRange 方法将 NSAttributedString 转换为 NSData。得到这个: No visible @interface for 'NSAttribute
有什么方法可以连接两个 NSAttributedString 吗?或者 NSAttributedString 和 NSString ?我尝试过这样的事情: NSAttributedString *at
有没有人知道那里有任何代码可以让我阅读包含 NSAttributedString 中的图像的 RTF? 是的,我知道有 RTFD 格式和 initWithRTF 方法...但是 initWithRTF
我正在使用 drawGlyphsForGlyphRange渲染 NSAttributedString (在 NSView drawRect 中) 有什么方法可以默认 NSAttributedStrin
这个问题在这里已经有了答案: How to use NSUnderlineStyle.PatternDot (1 个回答) 4 个月前关闭。 我有以下代码尝试为标签的字符串加下划线。 let attr
我已经花了3个小时来解决这个问题,但是有人知道为什么吗?请帮我! 下面的代码将图像添加为属性字符串的附件, UIImage *img = [UIImage imageNamed:imgName]; N
我有一个本地化的字符串: "%@ some text" = "%@ some text"; 格式说明符%@可以出现在本地化字符串中的任何位置。 问题是这个字符串应该是一个NSAttributedStr
我是一名优秀的程序员,十分优秀!