2011-06-06 14 views
26

में इंटरफ़ेस बिल्डर में एक रेखा को कैसे आकर्षित करें I सूची में कुछ आइटम अलग करने और UI को थोड़ा और साफ करने के लिए इंटरफ़ेस बिल्डर में एक साधारण इन्सेट लाइन खींचना चाहते हैं। मुझे ऑब्जेक्ट लाइब्रेरी में कोई भी "लाइन" या समान ऑब्जेक्ट दिखाई नहीं दे रहा है और इंटरफेस बिल्डर में कोई ड्राइंग कमांड नहीं दिख रहा है।एक्सकोड 4

उत्तर

60

मैं backgroundColor उचित रंग पर सेट के साथ एक बहुत संकीर्ण UIView का उपयोग करता हूं।

+0

क्या यह ऐप्पल के किसी भी दिशानिर्देश का उल्लंघन करता है? इस ऐप के साथ अपने ऐप्स को ऐप्पल की स्वीकृति प्रक्रिया के माध्यम से बनाया है? – Kongress

+0

नहीं, यह किसी भी दिशानिर्देश का उल्लंघन नहीं है और मेरे ऐप्स को मंजूरी दे दी गई है। –

+0

आदर्श से कम, लेकिन यह काम करता है। धन्यवाद। – Kongress

7

आईफोन यूआई लाइब्रेरी में कोई लाइन नहीं है। मैक्स ओएस एक्स पर यह कार्यक्षमता एनएसबीक्स द्वारा आपूर्ति की गई थी, लेकिन आईफोन पर कोई संबंधित यूआई तत्व नहीं है।

+0

पर्याप्त मेला। कामकाज के लिए कोई विचार? – Kongress

0

मैंने एक दृश्य का उपयोग किया और इसे संकीर्ण बना दिया & रंग को एक रेखा की तरह दिखने के लिए बदल दिया। लेकिन मेरी समस्या यह है कि मैं एक लंबवत स्क्रॉलव्यू पर लाइन का उपयोग कर रहा हूं और रेखाएं भी स्क्रॉल हो जाती हैं।

1

देखने के स्थान पर, क्यों न केवल लेबल का उपयोग करें और उपयुक्त पृष्ठभूमि रंग सेट करें?

+0

UIView से UILabel विरासत में मिलता है। तो आप अनिवार्य रूप से एक ही काम कर रहे हैं। इसके अलावा, चूंकि किसी लाइन में कोई टेक्स्ट नहीं है, इसलिए आपको UILabel लाए गए अतिरिक्त कार्यक्षमता की आवश्यकता नहीं होगी। –

7

यदि आपको डर है कि UIView प्रदर्शन को प्रभावित कर सकता है, तो आप CoreGraphics 'CAShapeLayers का उपयोग करके कोड में एक रेखा खींच सकते हैं।

प्रत्येक UIView में एक कैलियर है, इसलिए रेखा खींचें और इसे CALAYER के दृश्यों में जोड़ें।

(अपनी परियोजना के लिए क्वार्ट्ज ढांचे को जोड़ने के लिए सुनिश्चित करें)

UIBezierPath *linePath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0,self.view.frame.size.width, 1)]; 

//shape layer for the line 
CAShapeLayer *line = [CAShapeLayer layer]; 
line.path = [linePath CGPath]; 
line.fillColor = [[UIColor blackColor] CGColor]; 
line.frame = CGRectMake(xPosition, yPosition, self.view.frame.size.width,1); 

[self.view.layer addSublayer:line]; 
0

इंटरफ़ेस बिल्डर तुम छाया आवश्यक आकर्षित करने के लिए अनुमति नहीं देता: आप या तो एक कस्टम UIView के drawRect में या आपके विचार नियंत्रक में ऐसा कर सकते हैं एक इंसेट लाइन के लिए। यदि आप फ़ोटोशॉप के साथ काम करते हैं तो आप इसे जानते हैं।

यदि लाइन सफेद/बेज पृष्ठभूमि के सामने है तो निम्न कोड "इंसेट" खींचा जाएगा।

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 1.0f)]; 
line.backgroundColor = [UIColor colorWithRed:(200.0f/255.0f) green:(200.0f/255.0f) blue:(200.0f/255.0f) alpha:1.0f]; 
line.layer.shadowColor = [UIColor darkGrayColor].CGColor; 
line.layer.shadowOffset = CGSizeMake(0.0f, 1.0f); 
line.layer.shadowRadius = 0.5f; 
line.layer.shadowOpacity = 0.4f; 
line.layer.masksToBounds =NO; 
[Background addSubview:line]; 

< QuartzCore/QuartzCore.h आयात करने के लिए> याद रखें।

0

इंटरफ़ेस बिल्डर में एक आवंटक के रूप में, एक दृश्य जोड़ें जो ऊंचाई 2 बिंदुओं पर सेट है। उस दृश्य में आईबीओलेट को वायर करें और इसकी परत सीमा रंग और चौड़ाई सेट करें:

self.mySeparatorLine.layer.borderWidth = 1.0f; self.mySeparatorLine.layer.borderColor = [UIColor lightGrayColor] .CGColor;