के साथ एक बहुत ही पतली रेखा खींचना मैं अपने UIView की drawRect विधि में एक रेखा की एक बहुत पतली हेयरलाइन चौड़ाई खींचना चाहता हूं। जिस पंक्ति में मैं देखता हूं उसके पास CGContextSetLineWidth के लिए मान 0.5 है, वह एक समान 1.0 चौड़ाई मान से मेल नहीं खाता है जिसका उपयोग सीमा CALAYER को आकर्षित करने के लिए किया जाता है।CGContextAddLineToPoint और CGContextSetLineWidth
आप दोनों के बीच का अंतर देख सकते हैं - लाल रेखा (चौड़ाई = 1) बैंगनी/नीली रेखा (चौड़ाई = 0.5) से बहुत पतली है।
यहाँ कैसे मैं अपने छद्म 1.0 चौड़ाई क्षैतिज रेखा खींचने रहा है:
UIView *myView = (UIView *)self;
CALayer *layer = myView.layer;
layer.borderColor = [UIColor redColor].CGColor;
layer.borderWidth = 1.0;
:
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor);
CGContextSetLineWidth(ctx, 0.5); // I expected a very thin line
CGContextMoveToPoint(ctx, 0, y);
CGContextAddLineToPoint(ctx, self.bounds.size.width, y);
CGContextStrokePath(ctx);
यहाँ एक ही दृश्य के लिए एक बॉर्डर है, इस समय 1.0 बॉर्डर चौड़ाई का उपयोग कर मुझे अपनी खुद की कस्टम लाइन को आकर्षित करने के लिए अलग-अलग करने की क्या ज़रूरत है जो कैलियर संस्करण की समान चौड़ाई है?
यह एक तरह का जादू है! यह काम करता है, लेकिन क्या आप समझा सकते हैं कि मुझे लाइन चौड़ाई के रास्ते से नीचे क्यों जाना चाहिए या कुछ लिंक देना चाहिए? – PSsam
http://stackoverflow.com/a/13674460/77567 –
लेकिन उन्होंने टेक्स्ट की 6 स्पष्ट पंक्तियों में इतनी स्पष्ट रूप से समझाया ... पतली रेखाओं को चित्रित करते समय पिक्सेल सीमाओं को झुकाव से बचें। ड्राइंग तंत्र का एंटीअलाइजिंग "smeared" लाइन बनाता है जो आपको अपेक्षा की तुलना में मोटा दिखता है, लेकिन वे नहीं हैं। –