আপনি ফন্টের ক্যাপহাইট ব্যবহার করতে পারেন।
উদ্দেশ্য গ
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 অক্ষটি মূল গ্রাফিক্স স্থানাঙ্ক সিস্টেমের মতো বিপরীত হয়। আপনি যদি চিত্রটিকে wardর্ধ্বমুখী করতে চান তবে ইতিবাচককে সেট করুন bounds.origin.y
।
চিত্রটি পাঠ্যের ক্যাপ হাইটের সাথে উল্লম্বভাবে কেন্দ্ররেখা করা উচিত। সুতরাং আমরা সেট করতে হবে bounds.origin.y
করতে (capHeight - imageHeight)/2
।
চিত্রটিতে কিছুটা ঠাণ্ডা প্রভাব এড়ানো, আমাদের y এর ভগ্নাংশের অংশটি গোল করা উচিত। তবে হরফ এবং ইমেজগুলি সাধারণত ছোট থাকে, এমনকি 1px পার্থক্য চিত্রটিকে ভুলরকমের মতো দেখায়। সুতরাং আমি বিভাজক আগে বৃত্তাকার ফাংশন প্রয়োগ। এটি y মানের ভগ্নাংশকে .0 বা .5 তে পরিণত করে
আপনার ক্ষেত্রে, চিত্রটির উচ্চতা হরফের হ্যাপির চেয়ে বড়। তবে আপনি একইভাবে ব্যবহার করতে পারেন। অফসেট ওয়াই মানটি নেতিবাচক হবে। এবং এটি বেসলাইনের নীচে থেকে বিছানো হবে।