2015-12-16 11 views
9

मेरे आवेदन में मैं ActiveLabel फ़्रेम Github का उपयोग कर रहा हूं।UILabel लंबवत संरेखण

उस स्थिति में, मेरा लेबल UILabel के बीच में टेक्स्ट नहीं दिखाता है। यदि मैं सामान्य UILabel का उपयोग करता हूं तो यह ठीक काम करता है, लेकिन जब इसे ActiveLabel पर सेटिंग्स करता है, तो यह इस तरह मिलता है। enter image description here

(छवि क्रम में लिया जाता है)

मुझे लगता है कि यह किसी भी तरह संरेखण के साथ खेलने के लिए कोड है:

/// add line break mode 
private func addLineBreak(attrString: NSAttributedString) -> NSMutableAttributedString { 
    let mutAttrString = NSMutableAttributedString(attributedString: attrString) 

    var range = NSRange(location: 0, length: 0) 
    var attributes = mutAttrString.attributesAtIndex(0, effectiveRange: &range) 

    let paragraphStyle = attributes[NSParagraphStyleAttributeName] as? NSMutableParagraphStyle ?? NSMutableParagraphStyle() 
    paragraphStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    if let lineSpacing = lineSpacing { 
     paragraphStyle.lineSpacing = CGFloat(lineSpacing) 
    } 

    attributes[NSParagraphStyleAttributeName] = paragraphStyle 
    mutAttrString.setAttributes(attributes, range: range) 

    return mutAttrString 
} 

ActiveLabel.swift

ActiveType.swift

कोई भी विचार कैसे मैं इसे इस तरह के मध्य में बना सकता हूं: enter image description here

(छवि स्टोरीबोर्ड से लिया जाता है)

+0

स्टोरीबोर्ड में खड़ी जोड़ने स्थापित करने के लिए याद है और

public override func drawTextInRect(rect: CGRect) { let range = NSRange(location: 0, length: textStorage.length) textContainer.size = rect.size let usedRect = layoutManager.usedRectForTextContainer(textContainer) let glyphOriginY = (rect.height > usedRect.height) ? rect.origin.y + (rect.height - usedRect.height)/2 : rect.origin.y let glyphOrigin = CGPointMake(rect.origin.x, glyphOriginY) layoutManager.drawBackgroundForGlyphRange(range, atPoint: glyphOrigin) layoutManager.drawGlyphsForGlyphRange(range, atPoint: glyphOrigin) } 

साथ drawTextInRect विधि की जगह माता-पिता के दृष्टिकोण के लिए क्षैतिज बाधाएं। यह भी सुनिश्चित करें कि आप किसी भी/किसी स्टोरीबोर्ड दृश्य में ऐसा कर रहे हैं – Alex

+0

@Alex - मैं अपने एप्लिकेशन में ऑटो लेआउट का उपयोग नहीं कर रहा हूं। –

+1

आह उचित मेला, क्या मैं पूछ सकता हूं क्यों? यह मैन्युअल रूप से बाधाओं को बनाने के बजाय बहुत सारे सिरदर्द हल करता है – Alex

उत्तर

3

ActiveLabel.swift में मैं भी https://github.com/rishi420/ActiveLabel.swift

के तहत रेपो अलग किया गया है आप रेपो डाउनलोड करते हैं, verticalTextAlignmentCentertrue को

+0

ओम आप ​​एक भगवान हैं!:) ActiveLabel का उपयोग करने में एक और समस्या यह है कि न्यूनतम फ़ॉन्ट आकार काम नहीं कर रहा है, स्ट्रिंग में कई शब्द हैं तो फ़ॉन्ट आकार नहीं बदलता है। क्या आप इसे ठीक कर सकते हैं? मैं चाहता हूं कि पूरा पाठ UILabel (सक्रिय लेबल) में फिट हो, और UILabel में फिट करने के लिए फ़ॉन्ट का आकार भी बदलें। –

+0

संपादित करें: मैंने 'PrivateScaleFactor = 1'and 'समायोजित करने का प्रयास किया है' निजी func setupLabel() 'में' userInteractionEnabled = true' पर FontSizeToFitWidth = true' लेकिन कुछ भी नहीं किया। –

+0

@RoduckNickes :) आपके दूसरे प्रश्न के बारे में, फोर्कड रेपो अपडेट किया गया। फोर्कड रेपो फॉर्म डाउनलोड करें। 'minFontSize' का उपयोग करें। भंडार में सुधार के लिए बहुत सारे कमरे हैं। कोई भी शरीर योगदान करने के लिए स्वतंत्र महसूस करता है। –

0

आप इस तरह कोड में textAlignment सेट कर सकते हैं: showLab.textAlignment = NSTextAlignmentCenter;

या आप भी क्या, प्रयोगशाला, StoryBoard में होने के रूप में आप मैं चुन क्या लेबल

0

में मध्य का मतलब संरेखण का दूसरा इस पोस्ट पर एक नज़र डालें देखने को देखने के लिए स्टोरीबोर्ड या xib उपयोग कर सकते हैं:

Programmatically Add CenterX/CenterY Constraints

वैसे समस्या तब होगी जब आपने आईबी से पहले से ही एक लेबल खींचा है और फिर आप अपनी स्थिति बदलने की कोशिश कर रहे हैं। कोड तोड़ देगा। आपको प्रोग्रामेटिक रूप से लेबल बनाने की आवश्यकता होगी और फिर इसे केंद्र में सेट करना होगा।

और बहुत गंभीरता से, @ एलेक्स सही है। ऑटोलाउट बहुत सारी समस्याओं को हल करता है।

संबंधित मुद्दे