2013-05-13 9 views
5

के एक निश्चित हिस्से को रेखांकित करना मुझे शीर्षक के सुझाव के रूप में UILabel के एक निश्चित हिस्से को रेखांकित करने की आवश्यकता है। उदाहरण के लिए: Please click ESPNSoccernet to read the latest Football News. मैं ESPNSoccernet शब्द को रेखांकित करना चाहता हूं। ऐसा इसलिए है क्योंकि मैं इसे क्लिक करने योग्य होना चाहता हूं और इसे वेबसाइट से लिंक करने की आवश्यकता है।UILabel

ऐसा करने पर कुछ मार्गदर्शन की आवश्यकता है। अगर वहाँ एक और तरीका है, मुझे बताओ कि ...

+1

उसके लिए एक HTML स्ट्रिंग का उपयोग करें। और कस्टम लेबल में दिखाएं जो जिम्मेदार स्ट्रिंग का समर्थन करता है। – Divyu

+0

मुझे एक उदाहरण दिखा सकता है ... – lakesh

+0

आप http://stackoverflow.com/questions/7385892/how-can-i-set-substring-of-a-nsstring-as-bold-in-uilabel –

उत्तर

14
iOS 6 के लिए

, आप AttributedStrings

NSMutableAttributedString *yourString = [[NSMutableAttributedString alloc] initWithString:@"Please click ESPNSoccernet to read the latest Football News."]; 
[yourString addAttribute:NSUnderlineStyleAttributeName 
         value:[NSNumber numberWithInt:1] 
         range:(NSRange){0,25}]; 

label.attributedText = [yourString copy]; 

उपयोग कर सकते हैं आप भी एक 3 पार्टी UILable पुस्तकालय TTTAttributedLabel उपयोग कर सकते हैं। , तो आप ऐसा

1

UILabelसादे पाठ स्ट्रिंग्स (आईओएस 6 में यह अब भी NSAttributedString रों प्रदर्शित कर सकते हैं, लेकिन यह पुराने iOS संस्करण में काम नहीं करेगा, तो यह इस पर निर्भर नहीं सबसे अच्छा है) प्रदर्शित करने में ही सक्षम है एक लेबल के साथ ऐसा करने में सक्षम नहीं होगा।

आप जिम्मेदार पाठ प्रदर्शित करने के लिए TTTAttributedLabel पर देख सकते हैं (इसलिए आप अंडरलाइन और अन्य स्वरूपण जोड़ सकते हैं), लेकिन आप इस कक्षा के साथ हाइपरलिंक जोड़ने में सक्षम नहीं होंगे।

विकल्प आप तार का एक क्लिक करने योग्य खंड के लिए है मूल रूप से कर रहे हैं:

  1. उपयोग एक सादे UILabel और भाग पर एक UIButton कि आप क्लिक करने योग्य होना चाहते हैं, या

  2. उपयोग ओवरले TTTAttributedLabel अंडरलाइन प्रभाव प्राप्त करने के लिए, और UITapGestureRecognizer टैप का पता लगाने और उन्हें संभालने के लिए (ध्यान दें कि यह पर पूरे लेबल पर नलियां कैप्चर करेगा, केवल रेखांकित भाग नहीं)।

iOS 6 के लिए:

UILabel *label = [[UILabel alloc] init]; 
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Tap here to read the latest Football News."]; 
[string addAttribute:NSUnderlineStyleAttributeName value:@(1) range:NSMakeRange(4, 4)]; 
label.attributedText = [string copy]; 

पहले iOS संस्करण के साथ ही आईओएस 6 के लिए:

TTTAttributedLabel *label = [[TTTAttributedLabel alloc] init]; 
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Tap here to read the latest Football News."]; 
[string addAttribute:NSUnderlineStyleAttributeName value:@(1) range:NSMakeRange(4, 4)]; 
label.text = [string copy]; 

फिर एक इशारा recogniser जोड़ सकते हैं और लागू handleTap::

UITapGestureRecognizer *recogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[label addGestureRecognizer:recogniser]; 

- (void)handleTap:(UITapGestureRecognizer *)recogniser { 
    // Handle the tap here 
} 
+0

में आज़मा सकते हैं आईओएस 6.0 UILabel NSAttributedString – Bonnie

+0

@ बोनी हां का समर्थन करता है, लेकिन अधिकांश डेवलपर्स इस समय आईओएस 5 का समर्थन नहीं कर सकते हैं, इसलिए पुराने सॉफ़्टवेयर संस्करणों के लिए काम करने वाले किसी भी चीज़ का उपयोग करना सबसे अच्छा है। – Greg

+0

मैंने अभी TTTAttributed लेबल पर एक नज़र डाली थी। ऐसा लगता है कि वे लिंक की अनुमति देते हैं .. – lakesh

-2

आपका उपयोग कर सकते हैंऔर वांछित स्वरूपण रखने के लिए इसके लिए कुछ HTML कोड डालें। एचटीएमएल में हाइपरलिंक करने में सक्षम होने का बोनस भी शामिल है, हालांकि वेब पेज वेब दृश्य के अंदर ही होगा।

संपादित करें: यह विधि आईओएस 2.0 से काम करेगी और बाद में पुराने उपकरणों पर इसके साथ कोई समस्या नहीं होगी।

ऐसा करने के लिए, UIWebView वांछित दृश्य में जोड़ें और इसके लिए एक आउटलेट बनाएं (प्रदर्शन उद्देश्यों के लिए, मैं अपना webView कॉल करूंगा)।

viewDidLoad विधि में, जोड़ें:

NSString *HTML = @"<p>Please click <a href=\"http://www.espnfc.com\">ESPNSoccernet</a> to read the latest Football News</p>"; 
[webView loadHTMLString:HTML baseURL:nil]; 

आशा इस मदद करता है ...

+0

दूसरे शब्दों में, आप सुझाव दे रहे हैं कि हाइपरलिंक के लिए एक छोटे, सिंगल-लाइन-ऑफ-टेक्स्ट-साइज्ड वेब व्यू में इनलाइन खोलने के लिए पूरी तरह से स्वीकार्य है, जो निश्चित रूप से एक अच्छा समाधान नहीं है। – Greg

+0

इसके अलावा, टेक्स्ट की एक पंक्ति को प्रदर्शित करने के लिए वेब दृश्य का उपयोग करना काफी अधिक है और इसमें बहुत अधिक अनावश्यक ओवरहेड होता है, जब इसे और अधिक आसानी से किया जा सकता है। – Greg

+0

मैंने सुझाव नहीं दिया कि यह 'पूरी तरह से स्वीकार्य' है – Hacker

0

iOS 6 या उस मामले में बाद के संस्करण के लिए इस एप्लिकेशन आपको कम संस्करण के लिए NSMutableAttributedString

NSMutableAttributedString *labelText = [[NSMutableAttributedString alloc] initWithString:@"Hello this is demmy label for testing"]; 
    [labelText addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] 
     range:(NSRange){10,10}]; 

    label.attributedText = labelText; 

उपयोग कर सकते हैं, तो आप इस तरह उपयोग कर सकते हैं ..

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 116, 171, 20)]; 
label.text = @"Hello this is demmy label for testing"; 
label.textColor = [UIColor whiteColor]; 
label.font = [UIFont systemFontOfSize:16]; 
[self.view addSubview:label]; 

//underline code 
CGSize expectedLabelSize = [[m_BCListArray objectAtIndex:tagcount] sizeWithFont:label.font constrainedToSize:label.frame.size lineBreakMode:UILineBreakModeWordWrap]; 

UIView *viewUnderline=[[UIView alloc] init]; 
viewUnderline.frame=CGRectMake((label.frame.size.width - expectedLabelSize.width)/2, expectedLabelSize.height + (label.frame.size.height - expectedLabelSize.height)/2, expectedLabelSize.width, 1); 
viewUnderline.backgroundColor=[UIColor whiteColor]; 
[self.view addSubview:viewUnderline]; 
1

ठीक है, मैं किया है इस तरह की एक ही बात:

टेक्स्ट के साथ एक कस्टम बटन बनाएं: ESPNSoccernet, और पृष्ठभूमि स्पष्ट रंग ऊंचाई 1 और कुछ बैकग्राउ के साथ एक सबव्यूव के रूप में एक लेबल जोड़ें इस बटन के लिए रंग, जैसे कि "ESPNSoccernet" रेखांकित दिखता है। शेष पाठ को इस बटन के समीप एक लेबल में रखें, ताकि यह पूरे टेक्स्ट की तरह दिख सके।

उम्मीद है कि यह मदद करता है!

नोट: यदि आप केवल आईओएस 6.0 कर रहे हैं, तो आप अन्य उत्तरों की जांच कर सकते हैं।

2

Xcode में:

  1. लेबल का चयन करें और पहचान निरीक्षक चुनें।
  2. टेक्स्ट में सादा के बजाय जिम्मेदार चुनें।
  3. अब उस पाठ का वह हिस्सा चुनें जिसे आप रेखांकित करना चाहते हैं।
  4. फ़ॉन्ट का चयन करें और फ़ॉन्ट शैली में अंडरलाइन चुनें।

वहां आप जाते हैं।

0

निम्नलिखित कोड का टुकड़ा वांछित उत्पादन परिणाम:

NSDictionary *dictAttribute = @{NSForegroundColorAttributeName:[UIColor redColor],NSUnderlineStyleAttributeName:@1};   
    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"Please click ESPNSoccernet to read the latest Football News." attributes:dictAttribute]; 

    lblText.attributedText = attrString; 
2

स्विफ्ट 2.0:

1) रेखांकन विशेषता के साथ एक nsmutablestring करें और sampleLabel के पाठ में जोड़ें।

2) नमूना लेबल में एक टैप इशारा जोड़ें और आगे की कार्रवाई के लिए एक विधि को संबद्ध करें।

override func viewDidLoad() { 
    super.viewDidLoad() 

    let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.") 
    newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4)) 
    sampleLabel.attributedText = newsString.copy() as? NSAttributedString 

    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:") 
    tapGesture.numberOfTapsRequired = 1 
    sampleLabel.userInteractionEnabled = true 
    sampleLabel.addGestureRecognizer(tapGesture) 

} 
func tapResponse(recognizer: UITapGestureRecognizer) { 
    print("tap") 
}