2009-10-13 9 views
6

के आसपास छाया या सीमा, मैं एक यूस्क्रोलव्यू के चारों ओर एक सीमा/छाया खींचना चाहता हूं, मुझे पता है कि मैं अतिरिक्त दृश्य या स्क्रॉलव्यू के साथ वहां जा सकता हूं लेकिन मुझे कमियों को संभालने की तरह नहीं लगता लेकिन मैंने सुना है कि वहां होना चाहिए एक स्क्रॉलव्यू पर सीमा को आकर्षित करने की संभावना है और यही वह है जिसे मैं पसंद करूंगा।एक स्क्रॉलव्यू आईफोन

मैं आईफोन विकास के लिए नया नया हूं, कोई जवाब उपयोगी होगा।

उत्तर

17

आप अपनी पुस्तक (या किसी भी UIView) देखने की परत संपत्ति का उपयोग करते हैं तो आप आसानी से एक ठोस सीमा प्राप्त कर सकते हैं ...

#import <QuartzCore/QuartzCore.h> 
... 
myView.layer.borderWidth = 2; 
myView.layer.borderColor = [UIColor blackColor].CGColor; 

तुम भी परत का उपयोग कर सकते स्थापना द्वारा वास्तविक समय छाया लागू करने के लिए layer.shadow* गुण, लेकिन इस तकनीक के साथ प्रदर्शन धीमा हो सकता है, इसलिए मैं आमतौर पर निम्नलिखित जटिल, लेकिन अधिक प्रदर्शन तकनीक का उपयोग करना पसंद करता हूं। आप बीच में पारदर्शीता और किनारे के चारों ओर छाया के साथ एक पीएनजी छवि बना सकते हैं - इसमें 9 अलग-अलग क्षेत्र होने चाहिए: प्रत्येक कोने के लिए 4, प्रत्येक किनारे के लिए 4, और बीच में एक पूरी तरह से पारदर्शी 1x1 पिक्सेल क्षेत्र होना चाहिए। उदाहरण के लिए यदि आपकी छाया आपकी छवि में 6 पिक्सल तक फैली हुई है, तो आपकी छवि 6x पिक्सेल चौड़ी/ऊंची सीमाओं और बीच में 1x1 क्षेत्र के साथ 13x13 होगी। तो फिर तुम का उपयोग कर एक स्केलेबल छवि के रूप में सेट:

newImage = [image stretchableImageWithLeftCapWidth:6 topCapHeight:6]; 

अद्यतन: iOS 5.0 के बाद से stretchableImageWithLeftCapWidth:topCapHeight: तो केवल इस का उपयोग करता है, तो आप अभी भी आईओएस 4.x उपकरणों का समर्थन करना चाहते मान्य नहीं है। आप समर्थन करना चाहते हैं केवल iOS 5.0+ डिवाइस इस बजाय का उपयोग करें:

newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)]; 

तो फिर तुम तो यह पुस्तक को देखने के पूरे क्षेत्र तक ले जाता है जनक दृश्य पर छवि डाल दिया। यदि आप छाया को अपने स्क्रॉल करने योग्य तत्वों पर जाने के लिए चाहते हैं, (इसलिए आपका स्क्रॉल व्यू शेष पृष्ठ के पीछे इन्सेट/पीछे दिखता है) तो उस पर छाया छवि के साथ शीर्ष पर एक पारदर्शी UIView रखें ताकि यह आपके स्क्रॉल व्यू के माध्यम से दिखाई दे इसके पीछे।

1

myView.layout.borderColor UIColor का उपयोग करते समय एक असंगत सूचक चेतावनी उत्पन्न करता है, और मेरे लिए सीमा नहीं बदलता है।

CGColorRef का उपयोग करना मेरे लिए बजाय काम किया:

CGFloat lComponents[4] = {0,0,0,1}; 
CGColorSpaceRef lColorSpace = CGColorSpaceCreateDeviceRGB(); 
myView.layer.borderColor = CGColorCreate(lColorSpace, lComponents); 
CGColorSpaceRelease(lColorSpace); 
2

एक UIColor से CGColorRef प्राप्त करने के लिए आप भी इस उदाहरण का उपयोग कर सकते हैं:

#import <QuartzCore/QuartzCore.h> 

:

myView.layer.borderWidth = 2; 
myView.layer.borderColor = [UIColor blackColor].CGColor; 
+0

भयानक, यह मेरे लिए अच्छी तरह से चाल है :) –

5

न भूल जाते हैं यदि आप

का उपयोग करना चाहते हैं
संबंधित मुद्दे