คุณสามารถใช้ capHeight ของแบบอักษร
Objective-C
NSTextAttachment *icon = [[NSTextAttachment alloc] init];
UIImage *iconImage = [UIImage imageNamed:@"icon.png"];
[icon setBounds:CGRectMake(0, roundf(titleFont.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height)];
[icon setImage:iconImage];
NSAttributedString *iconString = [NSAttributedString attributedStringWithAttachment:icon];
[titleText appendAttributedString:iconString];
รวดเร็ว
let iconImage = UIImage(named: "icon.png")!
var icon = NSTextAttachment()
icon.bounds = CGRect(x: 0, y: (titleFont.capHeight - iconImage.size.height).rounded() / 2, width: iconImage.size.width, height: iconImage.size.height)
icon.image = iconImage
let iconString = NSAttributedString(attachment: icon)
titleText.append(iconString)
ภาพไฟล์แนบจะแสดงบนเส้นฐานของข้อความ และแกน y ของมันจะกลับด้านเหมือนระบบพิกัดกราฟิกหลัก หากคุณต้องการเลื่อนภาพขึ้นให้ตั้งค่าเป็นbounds.origin.y
บวก
รูปภาพควรจัดแนวตรงกลางในแนวตั้งโดยให้ฝาความสูงของข้อความ ดังนั้นเราจึงจำเป็นต้องตั้งค่าไปbounds.origin.y
(capHeight - imageHeight)/2
เพื่อหลีกเลี่ยงเอฟเฟกต์ที่มีรอยหยักบนรูปภาพเราควรปัดเศษส่วนของ y แต่แบบอักษรและรูปภาพมักจะมีขนาดเล็กแม้ความแตกต่าง 1px ก็ทำให้ภาพดูเหมือนไม่ตรงแนว ผมจึงใช้ฟังก์ชันกลมๆก่อนหาร ทำให้ส่วนของเศษส่วนของค่า y เป็น. 0 หรือ. 5
ในกรณีของคุณความสูงของภาพจะใหญ่กว่าความสูงของแบบอักษร แต่คุณสามารถใช้วิธีเดียวกัน ค่าออฟเซ็ต y จะเป็นลบ และจะวางจากด้านล่างของเส้นฐาน