मुझे कैलियर छाया के साथ कोई समस्या है। यहां बताया गया है कि मैं अपना विचार कैसे बना रहा हूं:परत में छाया जोड़ने से अव्यवस्थित रेटिना उपस्थिति
UIImage *screenshot = [SomeClass getScreenshot:mainView.view]; //full screen snap
CGFloat scale = [SomeClass getScreenScale]; // 1 or 2 for retina
CGFloat width = mainView.view.frame.size.width;
CGRect r1 = CGRectMake(0, 0, width*scale, 300*scale);
CGRect u1 = CGRectMake(0, 0, width, 300);
CGImageRef ref1 = CGImageCreateWithImageInRect([screenshot CGImage], r1);
l1 = [[UIButton alloc] initWithFrame:u1];
UIImage *img1 = [UIImage imageWithCGImage:ref1];
[l1 setBackgroundImage:img1 forState:UIControlStateNormal];
[l1 setAdjustsImageWhenHighlighted:NO];
CGImageRelease(ref1);
[mainView.view addSubview:l1];
ठीक है, तो यह ठीक काम करता है। जोड़ा गया छवि रेटिना संकल्प है। हालांकि, जैसे ही मैं परत पर एक छाया जोड़ता हूं, यह मानक रिज़ॉल्यूशन पर कूद जाता है, जिससे बटन अस्पष्ट दिखाई देता है।
l1.layer.shadowOffset = CGSizeMake(0, 0);
l1.layer.shadowRadius = 20;
l1.layer.shadowColor = [UIColor blackColor].CGColor;
l1.layer.shadowOpacity = 0.8f;
l1.layer.shouldRasterize = YES;
क्या कोई कारण है कि छाया जोड़ने से यह समस्या होगी?
आपके सुझाव के लिए धन्यवाद, लेकिन यह काम नहीं करता प्रतीत होता है। अभी भी मानक संकल्प में बदल जाता है। :/ –
मैंने इसे अपने आप से बाहर करने की कोशिश की। खराब प्रतिपादन का कारण l1.layer.shouldRasterize = हाँ है; आपको l1.layer.rasterizationScale = स्केल भी सेट करने की आवश्यकता है। – marcus
वह समस्या थी। मदद के लिए धन्यवाद! –