दिलचस्प पोस्ट
जावा में एक सरणी को कैसे प्रारंभ करें? सामान्य कार्यों पर गोलंग में 'ठीक' जैसे नक्शे पर लौटें इकाई फ़्रेमवर्क कोड पहले आलसी लोड हो रहा है एक एक्सएमएल फाइल कैसे पार्स करता है? जाँच करें कि साइट iframe के अंदर है या नहीं सी / सी ++ कार्यों का स्रोत कोड जावास्क्रिप्ट में IE संस्करण (v9 से पहले) का पता लगाएं कैसे BET के साथ यूटीएफ 8 एन्कोडिंग के साथ सी # में GetBytes () प्राप्त करें? सी प्रोग्राम से 100% CPU उपयोग कैसे करें एंड्रॉइड: टैबलेट के लिए पोट्रेट और लैंडस्केप की अनुमति दें, लेकिन फ़ोन पर पोर्ट को मजबूर करें? वाहक कनेक्शन प्रकार का पता लगाएं (3 जी / ईडीजीई / जीपीआरएस) अपवाद: फ़ैक्टरी नहीं मिल सका: javax.faces.context.FacesContextFactory PHP: एचटीएमएल स्ट्रिंग से एक विशिष्ट टैग स्ट्रिप? लिनक्स पर एक सेवा के रूप में जावा अनुप्रयोग चलाएं ScrollView के अंदर ViewPager correclty को स्क्रॉल नहीं करता

मैं आईफोन पर राउंड कॉरर्ड यूआईएलबल कैसे बना सकता हूं?

क्या राउंड कॉरर्ड यूआईएलएब्लेल्स बनाने के लिए एक बनाया गया है? यदि जवाब नहीं है, तो एक ऐसी वस्तु बनाने के बारे में क्या होगा?

वेब के समाधान से एकत्रित समाधान "मैं आईफोन पर राउंड कॉरर्ड यूआईएलबल कैसे बना सकता हूं?"

3.0 से पहले

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

  1. एक UIView उपवर्ग बनाएँ और इसे RoundRectView जैसे कुछ नाम दें
  2. RoundRectView के drawRect: विधि, गोल के किनारों के लिए किनारों के लिए CGContextAddLineToPoint () और और CGContextAddRineToPoint () जैसे कोर ग्राफिक्स कॉल का उपयोग करके दृश्य की सीमाओं के आसपास एक पथ RoundRectView
  3. एक यूआईएलएबल इन्सेंजन बनाएँ और उसे राउंडरेक्टव्यू का एक सबव्यू बनाएं।
  4. RoundRectView की सीमा के कुछ पिक्सल इनसेट के लेबल के फ्रेम को सेट करें (उदाहरण के लिए, label.frame = CGRectInset(roundRectView.bounds, 8, 8); )

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

3.0 और बाद में

आईफोन ओएस 3.0 और बाद में cornerRadius क्लास पर cornerRadius प्रॉपर्टी का समर्थन करता है। हर दृश्य में एक CALayer उदाहरण है जो आप को हेरफेर कर सकते हैं इसका मतलब है कि आप अब एक पंक्ति में गोल कोनों पा सकते हैं:

 view.layer.cornerRadius = 8; 

आपको #import <QuartzCore/QuartzCore.h> की आवश्यकता होगी और क्लेयरर्स के हेडर और गुणों तक पहुंच प्राप्त करने के लिए क्वार्ट्ज़कोर फ़्रेमवर्क से लिंक होगा

IOS 7.1 या बाद के संस्करण वाले उपकरणों के लिए, आपको जोड़ना होगा:

 yourUILabel.layer.masksToBounds = YES; yourUILabel.layer.cornerRadius = 8.0; 

स्विफ्ट आईओएस 8 के लिए ओएसकार्सविक के जवाब पर आधारित:

 yourUILabel.layer.masksToBounds = true yourUILabel.layer.cornerRadius = 8.0 
  1. आपके पास एक myLabel कहा जाता है: myLabel
  2. आपके "मी" या "एच" फ़ाइल आयात में: #import <QuartzCore/QuartzCore.h>
  3. आपके self.myLabel.layer.cornerRadius = 8; इस पंक्ति को self.myLabel.layer.cornerRadius = 8; : self.myLabel.layer.cornerRadius = 8;

    • यह निर्भर करता है कि कैसे आप कोने से रेडियस मूल्य 8 से दूसरे नंबर पर बदल सकते हैं 🙂

सौभाग्य

आप इस तरह से किसी भी नियंत्रण की सीमा की चौड़ाई के साथ गोल सीमा बना सकते हैं: –

 CALayer * l1 = [lblName layer]; [l1 setMasksToBounds:YES]; [l1 setCornerRadius:5.0]; // You can even add a border [l1 setBorderWidth:5.0]; [l1 setBorderColor:[[UIColor darkGrayColor] CGColor]]; 

बस अपने lblName साथ lblName जगह

नोट: – <QuartzCore/QuartzCore.h> आयात करने के लिए मत भूलना

एक और तरीका है कि यूआईएलबल के पीछे एक पीएनजी रखा जाए। मेरे पास कई लेबल वाले विचार हैं जो एकल पृष्ठभूमि पीएनजी को ओवरले करते हैं जिसमें व्यक्तिगत लेबल के लिए सभी कलाकृतियां हैं।

xCode 7.3.1 आईओएस 9.3.2

  _siteLabel.layer.masksToBounds = true; _siteLabel.layer.cornerRadius = 8; 
  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]; label.text = @"Your String."; label.layer.cornerRadius = 8.0; [self.view addSubview:label]; 

मैंने इस प्रभाव को प्राप्त करने के लिए एक तेज UILabel उप- UILabel बनाई है। इसके अतिरिक्त मैं अधिकतम रंगों के लिए स्वचालित रूप से पाठ रंग को काला या सफेद में सेट करता हूं

परिणाम

रंग-गोल सीमाओं

प्रयुक्त SO- पोस्ट:

  • कैसे यूआईएलबल के चारों ओर सीमा खींचें?
  • एक UIView के बाहर एक सीमा जोड़ें
  • जांचें कि क्या UIColor अंधेरे या उज्ज्वल है?

खेल का मैदान

बस इसे एक आईओएस खेल का मैदान में पेस्ट करें:

 //: Playground - noun: a place where people can play import UIKit class PillLabel : UILabel{ @IBInspectable var color = UIColor.lightGrayColor() @IBInspectable var cornerRadius: CGFloat = 8 @IBInspectable var labelText: String = "None" @IBInspectable var fontSize: CGFloat = 10.5 // This has to be balanced with the number of spaces prefixed to the text let borderWidth: CGFloat = 3 init(text: String, color: UIColor = UIColor.lightGrayColor()) { super.init(frame: CGRectMake(0, 0, 1, 1)) labelText = text self.color = color setup() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } func setup(){ // This has to be balanced with the borderWidth property text = " \(labelText)".uppercaseString // Credits to https://stackoverflow.com/a/33015915/784318 layer.borderWidth = borderWidth layer.cornerRadius = cornerRadius backgroundColor = color layer.borderColor = color.CGColor layer.masksToBounds = true font = UIFont.boldSystemFontOfSize(fontSize) textColor = color.contrastColor sizeToFit() // Credits to https://stackoverflow.com/a/15184257/784318 frame = CGRectInset(self.frame, -borderWidth, -borderWidth) } } extension UIColor { // Credits to https://stackoverflow.com/a/29044899/784318 func isLight() -> Bool{ var green: CGFloat = 0.0, red: CGFloat = 0.0, blue: CGFloat = 0.0, alpha: CGFloat = 0.0 self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) let brightness = ((red * 299) + (green * 587) + (blue * 114) ) / 1000 return brightness < 0.5 ? false : true } var contrastColor: UIColor{ return self.isLight() ? UIColor.blackColor() : UIColor.whiteColor() } } var label = PillLabel(text: "yellow", color: .yellowColor()) label = PillLabel(text: "green", color: .greenColor()) label = PillLabel(text: "white", color: .whiteColor()) label = PillLabel(text: "black", color: .blackColor()) 

Monotouch / Xamarin.iOS में मैंने इस तरह की समस्या को हल किया:

 UILabel exampleLabel = new UILabel(new CGRect(0, 0, 100, 50)) { Text = "Hello Monotouch red label" }; exampleLabel.Layer.MasksToBounds = true; exampleLabel.Layer.CornerRadius = 8; exampleLabel.Layer.BorderColor = UIColor.Red.CGColor; exampleLabel.Layer.BorderWidth = 2; 

क्या आपने इंटरफ़ेस बिल्डर से UIButton का उपयोग करने का प्रयास किया है (जो गोल कोने में है) और इसे लेबल जैसा दिखने के लिए सेटिंग्स के साथ प्रयोग करना यदि आप चाहते हैं कि सभी के भीतर स्थिर पाठ प्रदर्शित करना है

स्विफ्ट 2.0 में परिपूर्ण काम करता है

  @IBOutlet var theImage: UIImageView! //you can replace this with any UIObject eg: label etc override func viewDidLoad() { super.viewDidLoad() //Make sure the width and height are same self.theImage.layer.cornerRadius = self.theImage.frame.size.width / 2 self.theImage.layer.borderWidth = 2.0 self.theImage.layer.borderColor = UIColor.whiteColor().CGColor self.theImage.clipsToBounds = true } 

स्विफ्ट 3

यदि आप पृष्ठभूमि के रंग के साथ गोलाकार लेबल चाहते हैं, तो अन्य उत्तरों के अतिरिक्त, आपको layer की पृष्ठभूमि का रंग भी सेट करना होगा। view पृष्ठभूमि का रंग सेट करते समय यह काम नहीं करता है

 label.layer.cornerRadius = 8 label.layer.masksToBounds = true label.layer.backgroundColor = UIColor.lightGray.cgColor 

यदि आप स्वत: लेआउट का उपयोग कर रहे हैं, तो लेबल के चारों ओर कुछ पैडिंग करना चाहते हैं और मैन्युअल रूप से लेबल का आकार सेट नहीं करना चाहते हैं, तो आप यूआईएलबल उपवर्ग बना सकते हैं और ओवरराइड इंट्रिनसिंक कॉन्ट्रैंससिच गुण:

 class LabelWithPadding: UILabel { override var intrinsicContentSize: CGSize { let defaultSize = super.intrinsicContentSize return CGSize(width: defaultSize.width + 12, height: defaultSize.height + 8) } } 

दो को गठबंधन करने के लिए आपको label.textAlignment = center सेट करना होगा, अन्यथा टेक्स्ट को गठबंधन छोड़ दिया जाएगा।

यदि आप स्टोरीबोर्ड द्वारा यूआई ऑब्जेक्ट्स जैसे गोलाकार कोने ( layer.cornerRadius , layer.cornerRadius , layer.cornerRadius , layer.cornerRadius ) चाहते हैं तो clip to bounds सेट करें और User Defined Runtime Attributes layer.cornerRadius को layer.cornerRadius , टाइप = नंबर और वैल्यू = 9 (जैसा आपकी आवश्यकता के अनुसार है )

क्लिप को सीमा के रूप में सेट करें उपयोगकर्ता परिभाषित रनटाइम विशेषता सेट करें

अगस्त 2017 के दौरान स्विफ्ट 3 के साथ Xcode 8.1.2 में ठीक काम करता है

"कोनेराडियस" गोल की किनारों को सेट करने की प्रमुख संपत्ति है, जहां आप अपने आवेदन में सभी लेबल के लिए एक ही शैली का उपयोग कर रहे हैं, मैं एक विस्तार विधि के लिए सिफारिश करेगा

कोड:

  // extension Class extension UILabel { // extension user defined Method func setRoundEdge() { let myGreenColor = (UIColor(red: -0.108958, green: 0.714926, blue: 0.758113, alpha: 1.0)) //Width of border self.layer.borderWidth = 1.0 //How much the edge to be rounded self.layer.cornerRadius = 5.0 // following properties are optional //color for border self.layer.borderColor = myGreenColor.cgColor //color for text self.textColor = UIColor.red // Mask the bound self.layer.masksToBounds = true //clip the pixel contents self.clipsToBounds = true } } 

आउटपुट:

यहां छवि विवरण दर्ज करें

एक्सटेंशन विधि क्यों?

स्विफ्ट फाइल बनाएँ और निम्न कोड जोड़ें, जिसमें "यूआईएलबल" वर्ग के लिए एक्सटेंशन विधि है, जहां इस विधि को उपयोगकर्ता परिभाषित किया गया है, लेकिन वह आपके आवेदन में सभी लेबल के लिए काम करेगा और यदि आप स्थिरता और स्वच्छ कोड बनाए रखने में मदद करेंगे, तो भविष्य में किसी भी शैली को बदलने के लिए केवल एक्सटेंशन विधि में आवश्यकता होती है

आप वास्तव में क्या कर रहे हैं इसके आधार पर आप एक छवि बना सकते हैं और इसे पृष्ठभूमि के रूप में सेट कर सकते हैं