我想在固定宽度的框中绘制一些NSAttributedStrings,但是在计算绘制它们时会占用的正确高度时遇到问题.到目前为止,我已经尝试过:
调用- (NSSize) size,但结果是无用的(为此目的),因为他们会给出字符串所需的宽度.
- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options使用矩形调用我想要的宽度和NSStringDrawingUsesLineFragmentOrigin选项,就像我在绘图中使用的那样.结果......难以理解; 当然不是我想要的.(正如许多地方所指出的,包括这个 Cocoa-Dev线程).
创建一个临时的NSTextView并执行:
当我查询tmpView的框架时,宽度仍然是所需的,并且高度通常是正确的......直到我得到更长的字符串,当它通常是所需尺寸的一半时.(似乎没有最大尺寸被击中:一帧将是273.0高(约300太短),另一帧将是478.0(只有60-ish太短)).
[[tmpView textStorage] setAttributedString:aString];
[tmpView setHorizontallyResizable:NO];
[tmpView sizeToFit];
如果有人管理过这个,我会感激任何指点.
我想在不同视图的TextViews中加载长文本.文本视图结束时,文本应分为页面.下一个textview必须从文本的继续开始.
我经历了很多答案.但是所有都指定了在输入数据时限制文本内容.我想在TextView中显示分页数据.并且不会有任何输入或编辑.因此,关于它的委托方法将不起作用.
我试着加载固定长度的文本.但是当段落的编号不同时,它是不正确的.
所以我想要找到的是,当文本到达textview的容量结束时获得通知,或者根据no lines/no.of字符获得textview的容量.有没有办法做到这一点?
更新
根据我的评论,我搜索了很多,并在NSTextStorage,NSTextLayoutManager和NSTextContainer达成
我发现这个链接有助于轻松实现分页
http://sketchytech.blogspot.co.uk/2013/11/paging-and-paginating-easy-way-with.html
在这个例子中,他们使用循环创建了4个对象.可以这么说,因为他们已经将字符串拆分为4个部分,并在滚动视图的4个uitextviews中显示.
我试图根据字符串的长度设置一个条件分割到textcontainers.我试图通过考虑主要字符串的总长度和textview中显示的文本来创建条件.
但每个textview的文本长度与主字符串的总长度相同.那么我如何才能在textview的每个文本容器中显示长度文本?
这个问题有很多解决方案,但找不到不推荐的解决方案.
我有一个UILabel模式WordWrap和固定宽度,比方说250.行设置为0.
这是我尝试过的:
UILabel *contentLabel = (UILabel*)[contentView viewWithTag:10];
CGSize size = [contentLabel.text sizeWithFont:contentLabel.font forWidth:contentLabel.frame.size.width lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"Label's height is: %d", size.height);
Run Code Online (Sandbox Code Playgroud)
高度参数的输出总是20(所以它就像一行),而te文本就像30行一样.
我需要它用于UIScrollView目的.
我正在尝试计算UITableViewCell的高度,所以我定义了一个类似于此的类方法
+ (CGFloat)heightWithText:(NSString *)text
{
SizingLabel.text = text;
[SizingLabel sizeThatFits:CGSizeMake(LABEL_WIDTH, CGFLOAT_MAX)];
return (TOP_MARGIN + SizingLabel.frame.size.height + BOTTOM_MARGIN);
}
Run Code Online (Sandbox Code Playgroud)
我已经像这样定义了SizingLabel:
+ (void)initialize
{
SizingLabel = [[UILabel alloc] initWithFrame:CGRectZero];
SizingLabel.numberOfLines = 0;
SizingLabel.lineBreakMode = NSLineBreakByWordWrapping;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在-heightWithText:方法中粘贴断点,我会注意到SizingLabel的尺寸永远不会改变,因此我得到一个不正确的值.这是为什么?
ios ×3
uilabel ×2
appkit ×1
cocoa ×1
ios7 ×1
nstextview ×1
pagination ×1
split ×1
uitableview ×1
uitextview ×1
uiview ×1