jjzjj

NSLayoutManager

全部标签

ios - 点击 UILabel 的一部分文本

我有一个问题,boundingRectForGlyphRange总是返回CGRect.zero“0.0,0.0,0.0,0.0”。例如,我正在编码以触摸UILabel功能的一部分文本。我的文本第一部分是任何文本,第二部分是阅读更多。我希望点击识别器仅在我触摸阅读更多时工作。如果我触及UILabel上的任何一点,CGRectContainsPoint总是返回true,然后调用操作。这是我的代码:overridefuncviewDidLoad(){super.viewDidLoad()//ThefullstringletfirstPart:NSMutableAttributedString

ios - NSLayoutManager characterIndexForPoint 方法在 ios9 上失败

我正在实现一个带有链接点击支持的自定义UILabel。为此,我有以下方法:一种用于初始化结构(仅调用一次),另一种用于检测字符串中确定的文本范围内的点击:-(void)sharedInit{//Remember,thismethodisonlycalledonceself.layoutManager=[[NSLayoutManageralloc]init];self.textContainer=[[NSTextContaineralloc]initWithSize:self.frame.size];[self.layoutManageraddTextContainer:self.tex

ios - 使用 NSLayoutManager 计算文本大小

我正在开发一个View,它使用TextKit框架在列中排版文本,如下所示:我使用带有边缘插入(黑色矩形)的UIView边界来计算10个CGRects,然后我将其转换为NSTextContainers(红色矩形)。在drawRect:中,我将它们传递给NSLayoutManager,后者为我排版和绘制字形。我的问题是:我如何计算所需的列数?我可以绘制固定数量的列,但对于不同的文本长度,我需要以编程方式调整列数。p>我找到了方法[NSLayoutManagerglyphRangeForTextContainer:]当文本容器留空时它返回长度范围0。因此,我可以循环创建文本容器并使用此方法来

ios - NSLayoutManager 可以安全地用在后台线程上吗?

即使iOS文档说:NLayoutManager,NSTextStorage,andNSTextContainercanbeaccessedfromsubthreadsaslongastheappguaranteestheaccessfromasinglethread.我偶尔遇到这个异常:Terminatingappduetouncaughtexception'NSInternalInconsistencyException',reason:'Onlyrunonthemainthread!'这是回溯:ExceptionType:SIGABRTExceptionCodes:#0at0x19

objective-c - 阐明 NSLayoutManager 和 NSTextContainer 在垂直布局方面的行为?

代码示例我有一个NSLayoutManager、NSTextContainer和NSTextStorage作为自定义NSView(不是TextView)中的属性,在awakeFromNib()中初始化如下:textStorage=NSTextStorage(attributedString:self.attributedString)layoutManager=NSLayoutManager()textContainer=NSTextContainer(containerSize:NSMakeSize(self.frame.size.width,1))layoutManager.add

ios - 具有多个 NSTextContainer 的 NSLayoutManager 导致 UITextViews 不可选择/不可编辑

我正在尝试实现多页文本编辑布局,如Pages、MSWord等。在OSX上,我可以通过为多个NSTextView创建一个NSLayoutManager和一个NSTextStorage来实现这一点。每个NSTextView都有自己的NSTextContainer。请参阅下面的OSX代码。一个简单的示例,文本在两个NSTextView之间传播:importCocoaclassViewController:NSViewController{letlayoutManager=NSLayoutManager()lettextStorage=NSTextStorage(attributedStrin

cocoa - 如何使用显式 NSLayoutManager、NSTextStorage、NSTextContainer 以编程方式设置 NSTextView?

按照苹果文档,我试图通过它的两个构造函数方法设置一个简单的NSTextView。我将下面的代码放在内容View的ViewController的viewDidAppear方法中。textView是NSTextView的实例,frameRect是内容View的框架。以下Swift代码有效(给我一个可编辑的textView,文本显示在屏幕上):textView=NSTextView(frame:frameRect!)self.view.addSubview(textView)textView.textStorage?.appendAttributedString(NSAttributedSt

ios - iOS7 中UITextView contentSize 的变化和NSLayoutManager

问题:UITextView在某些情况下悄悄地改变了它的contentSize。最简单的情况是带有大文本和键盘的textView。只需添加UITextViewsocket并将-viewDidLoad设置为:-(void)viewDidLoad{[superviewDidLoad];//expanddefault"Lorem..."_textView.text=[NSStringstringWithFormat:@"1%@\n\n2%@\n\n3%@\n\n4%@\n\n5",_textView.text,_textView.text,_textView.text,_textView.te

ios - 从 UITextView 和 NSLayoutManager 获取行信息

为了支持UIAccessibilityReadingContent协议(protocol),我需要我的UITextView来回答我关于它的行的问题。这些是我需要实现的协议(protocol)方法:accessibilityLineNumberForPoint:accessibilityContentForLineNumber:accessibilityFrameForLineNumber:accessibilityPageContent我认为NSLayoutManager可以帮助我,但我对它的经验并不丰富。我已经想通了一些(我认为),但仍然需要一些帮助。Apple有一些示例代码(her