配置系统文本:
async.each(posts, function(item, callback) {
if (isVideo(item.data.url)) {
eroJson.push(getAlbumId(item.data.url));
}
callback(); // this callback is for informing that i am done processing one item in array.
},
function(err) {
//this function will be invoked when the callback() in the above body was called maximum time(e.g posts.length times)
console.log("Callback function works");
if(err) console.log(err);
});
获得路径:
func prepareTextSystem() {
textStorage.addLayoutManager(layoutManager)
layoutManager.addTextContainer(textContainer)
layoutManager.delegate = self
textContainer.lineFragmentPadding = 0
textContainer.lineBreakMode = lineBreakMode
textContainer.maximumNumberOfLines = numberOfLines
}
绘制:
let glyphaRect = layoutManager.boundingRect(forGlyphRange: glyphRange, in: textContainer!)
let glyphPosition = layoutManager.location(forGlyphAt: index)
let lineUsedRect = layoutManager.lineFragmentUsedRect(forGlyphAt: index, effectiveRange: nil)
let pointY = lineUsedRect.origin.y + glyphPosition.y
if index == 0 {
firstCharPath = UIBezierPath(rect: glyphaRect)//the first char Rect
lineUsedRectPath = UIBezierPath(rect: lineUsedRect)//the whole lineUsedRect
baseLinePath = UIBezierPath()//Baseline
baseLinePath?.move(to: CGPoint.init(x: 0, y: pointY))
baseLinePath?.addLine(to: CGPoint.init(x: Screen_W, y: pointY))
setNeedsDisplay()
}
如果textStorage存储字符串" Ye" ,代表如下:
如果textStorage存储字符串"有y"(第一个字符是中文字符),则表示如下:
问题:
2.我怎样才能获得英文角色的最高职位?
答案 0 :(得分:0)
它没有与顶部对齐,因为有些字符可能更高。以防万一:
YY
答案 1 :(得分:0)
两种情况下的对齐都是正确的。同样的。
汉字很好地(上方和下方)使用了所有空间,并且看起来与顶部对齐。
对于英文字符,仅使用空间的一部分。在它上面还有额外的空间用于特殊阅读标志。我们与顶部保持一致。
考虑下划线_符号。那里面有很多白色空间,但几乎没有。
Æ已经很高了。为Å顶部的小点保留的空间正在引起您的问题。