मैं UIKit
UILabel
में अंकों के बीच अंतर को बदलना चाहता हूं ताकि यह बराबर हो।मैं UILabel में अक्षर अंतर कैसे बदलूं?
मानक अंतर के साथ, लेबल इस तरह दिखता है:
मैं इसे करना चाहते हैं इस तरह देखने के लिए:
यह कैसे प्राप्त किया जा सकता?
मैं UIKit
UILabel
में अंकों के बीच अंतर को बदलना चाहता हूं ताकि यह बराबर हो।मैं UILabel में अक्षर अंतर कैसे बदलूं?
मानक अंतर के साथ, लेबल इस तरह दिखता है:
मैं इसे करना चाहते हैं इस तरह देखने के लिए:
यह कैसे प्राप्त किया जा सकता?
आप एक जिम्मेदार ठहराया स्ट्रिंग पर NSKernAttributeName विशेषता का उपयोग कर सकते हैं:
UILabel *l = [UILabel new]
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"127"]
//the value paramenter defines your spacing amount, and range is the range of characters in your string the spacing will apply to. Here we want it to apply to the whole string so we take it from 0 to text.length.
[text addAttribute:NSKernAttributeName value:[NSNumber numberWithDouble:-0.5] range:NSMakeRange(0, text.length)];
[l setAttributedText:text];
NSString *myString = @"127";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:myString];
float letterSpacing = -1.50f; // change spacing here
[attributedString addAttribute:NSKernAttributeName value:@(letterSpacing) range:NSMakeRange(0, [myString length])];
[myLabel setAttributedText:attributedString];
इसके अलावा अधिक जानकारी और परिणामों के लिए यह देखें: लेबल पर http://www.devsign.co/notes/tracking-and-character-spacing
क्लिक करें और अपने गुण निरीक्षक के पास जाओ। सादा से जिम्मेदार पाठ बदलें। आप रिक्ति के लिए कई विकल्प होंगे। उम्मीद है की यह मदद करेगा।
क्या आप समझा सकते हैं, क्योंकि मुझे "अक्षर अंतर" –
आप एक NSAttributedString का उपयोग करें और NSKernAttributeName विशेषता के साथ खेल सकते हैं। इसके लिए डिफ़ॉल्ट मान 0 है, इसलिए आप इसे ऋणात्मक संख्या में सेट करना चाहते हैं।
Obj सी मेंआप कुछ इस तरह कर सकते हैं:
NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc]initWithString: @"Test test test test "];
[attrStr addAttribute:NSKernAttributeName value:@(4.0) range:NSMakeRange(0, attrStr.length)];
label.attributedText = attrStr;
स्विफ्ट में आप कुछ इस तरह कर सकता है:
let myTitle = "my title"
let titleLabel = UILabel()
let attributes: NSDictionary = [
NSFontAttributeName:UIFont(name: "FONT_NAME", size: TEXT_SIZE),
NSKernAttributeName:CGFloat(2.0)
]
let attributedTitle = NSAttributedString(string: myTitle, attributes:attributes as? [String : AnyObject])
titleLabel.attributedText = attributedTitle
सबसे आसान तरीका है एक बनाने के लिए है कस्टम UILabel वर्ग और स्टोरीबोर्ड से अक्षर अंतर सेट करें।
open class CustomLabel : UILabel {
@IBInspectable open var characterSpacing:CGFloat = 1 {
didSet {
let attributedString = NSMutableAttributedString(string: self.text!)
attributedString.addAttribute(NSKernAttributeName, value: self.characterSpacing, range: NSRange(location: 0, length: attributedString.length))
self.attributedText = attributedString
}
}
}
NSKernAttributeName इस्तेमाल किया जा सकता।
लेकिन अन्य उत्तरों में सुधार में: पूर्ण पाठ लंबाई पर लागू न करें, लेकिन (टेक्स्ट। लम्बाई - 1)।
नकारात्मक या सकारात्मक अंतर पत्र में जोड़ा गया है और यह अंतिम के लिए आवश्यक नहीं है। मान लीजिए कि आप एक सकारात्मक अंतर जोड़ देंगे जो आखिरी पत्र के बाद एक अंतराल में समाप्त होगा। एक केंद्रित स्ट्रिंग अब केंद्रित नहीं होगा। नकारात्मक रिक्ति के लिए भी यही लागू होता है।
NSString *text = @"Sample Text";
UILabel *label = [UILabel new]
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString: text];
[attributedString addAttribute:NSKernAttributeName value:[NSNumber numberWithDouble:-1.0] range:NSMakeRange(0, text.length-1)];
[label setAttributedTitle:attributedString forState:UIControlStateNormal];
पूर्ण पाठ लंबाई के लिए लागू।
धन्यवाद जे 2 के लिए कोई विकल्प नहीं दिखता है। मैं स्ट्रिंग के एक subrange में कर्नाई लागू करने की क्षमता के बारे में भूल गया। –