2011-03-20 19 views
12

का उपयोग करके रेखा रेखा बनाएं मैं तालिका दृश्य कक्ष में रेखा खींचना चाहता हूं ताकि मैं टेक्स्टफील्ड & एकल सेल में स्विच कर सकूं। मैंने सेल की ऊंचाई में वृद्धि की। मैं सेल में लाइन कैसे आकर्षित कर सकता हूं?CGContext

मैं जो कोड

//Get the CGContext from this view 
CGContextRef context = UIGraphicsGetCurrentContext(); 
//Set the stroke (pen) color 
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
//Set the width of the pen mark 
CGContextSetLineWidth(context, 1.0); 

// Draw a line 
//Start at this point 
CGContextMoveToPoint(context, 10.0, 30.0); 

//Give instructions to the CGContext 
//(move "pen" around the screen) 
CGContextAddLineToPoint(context, 310.0, 30.0); 


//Draw it 
CGContextStrokePath(context); 

निम्नलिखित शामिल हैं तो मैं वर्गीकृत किया तालिका शैली के साथ एक tableViewController है UIView के उपवर्ग है। CellForRowAtIndexPath में मेरे पास निम्नलिखित कोड

//code to add textfield 
DrawLineView *drawLine = [[DrawLineView alloc]init]; 
[cell addSubview:drawLine]; 
//code add switch 

लेकिन यह किसी भी रेखा को चित्रित नहीं कर रहा है। मैं 2 अलग-अलग कोशिकाओं का उपयोग नहीं कर सकता। मुझे कृपया मेरी मदद करनी है। ग्राफिक्स i iphone से निपटने वाला यह मेरा पहला है। धन्यवाद

उत्तर

0

दो चीजें ... सबसे पहले, आप आम तौर पर सेल में नहीं आते हैं।

आप आमतौर पर सामग्री दृश्य में आकर्षित होते हैं। कभी-कभी यह सेल की पृष्ठभूमि में समझ में आता है दृश्य या चयनित बैकग्राउंड व्यू।

[cell.contentView addSubview:drawLine]; 

दूसरा, डिफ़ॉल्ट सेल टेक्स्ट लेबल सेल.टेक्स्ट लेबल और cell.detailTextLabel में गैर पारदर्शी पृष्ठभूमि है। अपने पृष्ठभूमि रंग को [UIColor clearColor] पर सेट करने का प्रयास करें।

संपादित करें: एक और बात: यदि आप अपने drawLine के लिए एक उचित फ्रेम निर्धारित करने की आवश्यकता

DrawLineView *drawLine = [[DrawLineView alloc]initWithFrame:cell.contentView.bounds]; 
+0

उत्तर के लिए धन्यवाद। लेकिन यह काम नहीं कर रहा है। – iOSAppDev

18

सब आप क्या करना चाहते एक रेखा खींच है, तो यह एक बहुत बेहतर होगा एक CAShapeLayer उपयोग करने के लिए, पास यह एक रेखा के साथ एक पथ है, और फिर कोशिकाओं सामग्री दृश्य के एक sublayer के रूप में संलग्न है। तालिका को कस्टम drawRect के साथ दृश्य का उपयोग करने से बेहतर प्रदर्शन करना चाहिए।

CALayer के माध्यम से एक लाइन और पथ बना का उदाहरण:

// You'll also need the QuartzCore framework added to the project 
#import <QuartzCore/QuartzCore.h> 

CAShapeLayer *lineShape = nil; 
CGMutablePathRef linePath = nil; 
linePath = CGPathCreateMutable(); 
lineShape = [CAShapeLayer layer]; 

lineShape.lineWidth = 4.0f; 
lineShape.lineCap = kCALineCapRound;; 
lineShape.strokeColor = [[UIColor blackColor] CGColor]; 

int x = 0; int y = 0; 
int toX = 30; int toY = 40;        
CGPathMoveToPoint(linePath, NULL, x, y); 
CGPathAddLineToPoint(linePath, NULL, toX, toY); 

lineShape.path = linePath; 
CGPathRelease(linePath); 
[self.layer addSublayer:lineShape]; 
+0

क्या आप समझा सकते हैं कि यह कैसे कर सकता है? – iOSAppDev

+2

जोड़ा गया उदाहरण कोड। –

+0

CoreAnimation और CoreGraphics के साथ चित्रण बड़े पैमाने पर विवादित प्रतीत होता है। मैंने हाल ही में डब्लूडीसी2011 में प्रस्तुत ऐप्पल से एक वीडियो देखा जहां प्रस्तुतकर्ता ने देखा कि कोरग्राफिक्स कोरएनीमेशन से तेज होगा। क्या इन दावों का बैक अप लेने के लिए कोई मानक उपलब्ध है? – Brian

0

मुझे लगता है, एक रेखा खींचने का एक बहुत ही सरल तरीका एक UIView बना सकते हैं और इच्छित रंग के साथ इसे भरने के लिए, फिर उसके अनुसार इसकी चौड़ाई का चयन और सेटअप ऊंचाई 1 पिक्सेल होने की तरह:

var lineView : UIView = { 
    let view = UIView() 
    view.backgroundColor = UIColor.blackColor() 
    view.translatesAutoresizingMaskIntoConstraints = false 
    return view 
}() 


self.view.addSubview(lineView) 
self.view.addConstraints(NSLayoutConstraint.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["view": lineView]))) 
self.view.addConstraints(NSLayoutConstraint.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[view(1)]", options: NSLayoutFormatOptions(), metrics: nil, views: ["view": lineView]))) 
संबंधित मुद्दे