উত্তর:
সম্পাদনা: স্পষ্টতই NSAttributedString
এটি আইওএস 6 এবং তারপরে করবে। NSString
লেবেলের পাঠ্য সেট করতে একটি ব্যবহার করার পরিবর্তে NSAttributedString
এটিতে একটি তৈরি করুন , বৈশিষ্ট্যগুলি সেট করুন, তারপরে এটি .attributedText
লেবেলের হিসাবে সেট করুন। আপনি যে কোডটি চান তা এই জাতীয় কিছু হবে:
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Sample text"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:24];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, strLength)];
uiLabel.attributedText = attrString;
NSAttributedString পুরাতন attributedStringWithString একই জিনিস করেনি, কিন্তু এখন যে অবচিত করা হচ্ছে।
Reasonsতিহাসিক কারণে, এখানে আমার মূল উত্তর:
সংক্ষিপ্ত উত্তর: আপনি পারবেন না। পাঠ্য রেখার মধ্যে ব্যবধান পরিবর্তন করতে আপনাকে সাবক্লাস করতে হবে UILabel
এবং নিজস্ব রোল করতে হবে drawTextInRect
, একাধিক লেবেল তৈরি করতে হবে বা একটি ভিন্ন ফন্ট ব্যবহার করতে হবে (সম্ভবত একটি নির্দিষ্ট রেখার উচ্চতার জন্য সম্পাদিত একটি, ফিলিপের উত্তর দেখুন)।
দীর্ঘ উত্তর: মুদ্রণ এবং অনলাইন বিশ্বে পাঠ্যের রেখার মধ্যবর্তী স্থানটি "শীর্ষস্থানীয়" হিসাবে পরিচিত ('শিরোনাম' সহ ছড়াগুলি, এবং কয়েক দশক আগে ব্যবহৃত সীসা ধাতু থেকে এসেছে)। শীর্ষস্থানীয় হ'ল কেবলমাত্র পঠনযোগ্য সম্পত্তি UIFont
, যা ৪.০ এ অবমূল্যায়ন করে প্রতিস্থাপন করা হয়েছিল lineHeight
। আমি যতদূর জানি, নির্দিষ্ট পরামিতিগুলির সাথে সেট করে কোনও ফন্ট তৈরি করার উপায় নেই lineHeight
; আপনি সিস্টেম ফন্ট এবং আপনার যুক্ত কোনও কাস্টম ফন্ট পাবেন তবে একবার ইনস্টল হয়ে গেলে সেগুলি টুইট করতে পারবেন না।
এর মধ্যে কোনও ব্যবধান পরামিতি নেই UILabel
।
আমি UILabel
যেমন আচরণ করি তেমন বিশেষভাবে সন্তুষ্ট নই , তাই আমি আপনার নিজের সাবক্লাস লেখার বা তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করার পরামর্শ দিচ্ছি। এটি আপনার হরফ পছন্দ থেকে আচরণকে স্বাধীন করে তুলবে এবং সর্বাধিক পুনঃব্যবহারযোগ্য সমাধান হবে।
আমি আশা করি এর মধ্যে আরও নমনীয়তা ছিলUILabel
এবং আমি ভুল প্রমাণিত হতে পেরে খুশি হব!
আইওএস 6 থেকে শুরু করে আপনি ইউআইএবেবেলে একটি বিশিষ্ট স্ট্রিং সেট করতে পারেন:
NSString *labelText = @"some text";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:40];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
cell.label.attributedText = attributedString ;
AttributedString
উদাহরণস্বরূপ লেবেলের পাঠ্য সারিবদ্ধকরণের জন্য অক্ষম ব্যবহার করে , তাই আপনাকে এটি অনুচ্ছেদ শৈলীতে যুক্ত করতে হবে।
আপনি স্টোরিবোর্ডে লাইনের ব্যবধান নিয়ন্ত্রণ করতে পারেন:
ইন্টারফেস নির্মাতা থেকে:
প্রোগ্রামেটিক্যালি:
সুইফট 4
লেবেল এক্সটেনশন ব্যবহার করা হচ্ছে
extension UILabel {
func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) {
guard let labelText = self.text else { return }
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing
paragraphStyle.lineHeightMultiple = lineHeightMultiple
let attributedString:NSMutableAttributedString
if let labelattributedText = self.attributedText {
attributedString = NSMutableAttributedString(attributedString: labelattributedText)
} else {
attributedString = NSMutableAttributedString(string: labelText)
}
// Line spacing attribute
attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))
self.attributedText = attributedString
}
}
এখন কল এক্সটেনশন ফাংশন
let label = UILabel()
let stringValue = "How to\ncontrol\nthe\nline spacing\nin UILabel"
// Pass value for any one argument - lineSpacing or lineHeightMultiple
label.setLineSpacing(lineSpacing: 2.0) . // try values 1.0 to 5.0
// or try lineHeightMultiple
//label.setLineSpacing(lineHeightMultiple = 2.0) // try values 0.5 to 2.0
বা লেবেল উদাহরণ ব্যবহার করে (ফলাফল দেখতে কেবল এই কোডটি অনুলিপি করুন এবং চালনা করুন)
let label = UILabel()
let stringValue = "Set\nUILabel\nline\nspacing"
let attrString = NSMutableAttributedString(string: stringValue)
var style = NSMutableParagraphStyle()
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40
// Line spacing attribute
attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count))
// Character spacing attribute
attrString.addAttribute(NSAttributedStringKey.kern, value: 2, range: NSMakeRange(0, attrString.length))
label.attributedText = attrString
সুইফট 3
let label = UILabel()
let stringValue = "Set\nUILabel\nline\nspacing"
let attrString = NSMutableAttributedString(string: stringValue)
var style = NSMutableParagraphStyle()
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40
attrString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: stringValue.characters.count))
label.attributedText = attrString
আমার সমাধানটি হ'ল ফন্ট ফাইলটি নিজেই প্যাচ করা এবং তার লাইনের উচ্চতা অবশ্যই স্থির করা। http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/
আমাকে 'হিয়া' ব্লকে 'লাইনগ্যাপ', 'আরোহী', 'উত্সাহক' পরিবর্তন করতে হয়েছিল (ব্লগের উদাহরণ হিসাবে)।
এই লোকটি লাইনের উচ্চতা পেতে একটি ক্লাস তৈরি করেছে (কোরটেক্সটটি ব্যবহার না করে, এমটিবেল লাইব্রেরি হিসাবে): https://github.com/LemonCake/MSLabel
আমি যে সেরা জিনিসটি পেয়েছি তা হ'ল: https://github.com/mattt/TTTAttributesLabel
এটি একটি ইউআইলাবেল সাবক্লাস যাতে আপনি এটি কেবল এটিকে ফেলে দিতে পারেন এবং তারপরে রেখার উচ্চতা পরিবর্তন করতে:
myLabel.lineHeightMultiple = 0.85;
myLabel.leading = 2;
আমি এটির মতো তৃতীয় পক্ষের গ্রন্থাগারগুলি পেয়েছি:
https://github.com/Tuszy/MTLabel
সবচেয়ে সহজ সমাধান হতে।
লাইন স্পেসিংটিকে প্রোগ্রামগতভাবে সেট করার জন্য এখানে কিছু সুইফট কোড রয়েছে
let label = UILabel()
let attributedText = NSMutableAttributedString(string: "Your string")
let paragraphStyle = NSMutableParagraphStyle()
//SET THIS:
paragraphStyle.lineSpacing = 4
//OR SET THIS:
paragraphStyle.lineHeightMultiple = 4
//Or set both :)
let range = NSMakeRange(0, attributedText.length)
attributedText.addAttributes([NSParagraphStyleAttributeName : paragraphStyle], range: range)
label.attributedText = attributedText
অবশ্যই, আপনি যদি স্ট্রিংটিকে প্রোগ্রামটিমে পাস করেন তবে মাইকের উত্তর কাজ করে না। এই ক্ষেত্রে আপনাকে একটি বিশিষ্ট স্ট্রিং পাস করতে হবে এবং এর স্টাইলটি পরিবর্তন করতে হবে।
NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:@"Your \nregular \nstring"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:4];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, attrString.length)];
_label.attributedText = attrString;