我无法在其视图中绘制一个没有边距的NSAttributedString
。这是我的代码:
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:72.0f]};
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Hello"
attributes:attributes];
[string drawWithRect:rect
options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesDeviceMetrics
context:nil];
这会导致以下行为:
请注意左侧和顶部的边距。
我意识到可能有一些方法来对齐文本而不使其符合视图的边缘,但是使其符合视图的边缘将允许我使用自动布局等直观地处理视图。
当字符串包含前导或尾随空格时,我不关心行为。
如果使用NSAttributedString
无法做到这一点,是否还有其他方法可以推荐您推荐的此行为?
澄清一下,这就是我想看到的第1号。
答案 0 :(得分:5)
您可以使用CoreText获取高度,宽度向量值:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = mongoose.Schema.Types.ObjectId,
var Stamp = require('../models/stamp.js');
var User = new Schema({
name: { type: String},
stamps: [{ type: ObjectId, ref: 'Stamp' }],
所以你可以得到直肠。但最高利润没有错误
答案 1 :(得分:3)
使用CoreText,CTLineGetTypographicBounds()可能就是你要找的东西。我自己没有用过这个。下面的代码演示了这个想法(将“Hello”绘制到没有顶部/左边距的自定义UIView)。
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
UIGraphicsPushContext(context)
let viewHeight = bounds.size.height
let attributedString = NSAttributedString(string: "Hello")
let line = CTLineCreateWithAttributedString(attributedString)
var ascent: CGFloat = 0.0
let width = CTLineGetTypographicBounds(line, &ascent, nil, nil)
CGContextSaveGState(context)
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, -viewHeight)
CGContextSetTextPosition(context, 0, viewHeight - ascent)
CTLineDraw(line, context)
CGContextRestoreGState(context)
UIGraphicsPopContext()
}
答案 2 :(得分:1)
试试这个。
float fonsize = 30.0;
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:fonsize]};
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"HelloWorld"
attributes:attributes];
CGSize stringBoundingBox = [string.string sizeWithFont:[UIFont systemFontOfSize:fonsize]];
CGRect rect = CGRectMake(50, 50, stringBoundingBox.width,stringBoundingBox.height);
UILabel* lbl = [[UILabel alloc] initWithFrame:rect];
lbl.backgroundColor = [UIColor yellowColor];
lbl.attributedText = string;
[self.view addSubview:lbl];