2011-02-06 16 views
59

मेरे पास एक ऐप है जो मैं अपने ऐप के लिए पृष्ठभूमि के रूप में चाहता हूं इससे कोई फर्क नहीं पड़ता कि वे किस व्यू कंट्रोलर पर हैं - आप इसे कैसे पूरा करते हैं?पूरे आईफोन/आईपैड ऐप के लिए पृष्ठभूमि छवि सेट करें

उत्तर

88

करने का तरीका यहां छवि की कोई पृष्ठभूमि सेट:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

संपादित करें: ऊपर लिखने के लिए क्या Felixyz कहा (और Manni करने के लिए धन्यवाद), आपका प्रतिनिधि में ऐसा करते हैं:

window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

और प्रत्येक दृश्य में आप छवि रखना चाहते हैं, ऐसा करें:

self.view.backgroundColor = [UIColor clearColor]; 
+7

मैंने अपने दृश्यों पर मुख्य विंडो निब और यूआईसीओलर क्लियर रंग पर UIImageView का उपयोग करके समाप्त किया। ध्यान दें कि कलरविथपटरर्न इमेज का उपयोग करके ऊपर बताए गए अनुसार मेरी मेमोरी का उपयोग 1.7 एम से 9.5 एम तक कूदता है जब ऐप पहली बार लोड होता है - colorWithPatternImage बस मेमोरी का एक टन खाता है। – Slee

+1

पृष्ठभूमि यूनिवर्सल के लिए 3 पीएनजी फाइलें तैयार करने की अनुशंसा की जाती है, Background.png, [email protected], पृष्ठभूमि ~ iPad.png, और नीचे कोड का उपयोग करके पृष्ठभूमि सेट करें: self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "पृष्ठभूमि"]]; आईओएस आपकी डिवाइस श्रेणी के कारण सही पीएनजी फाइल का चयन करेगा। इस सहायता की आशा करें। – ZYiOS

+0

मैंने उपर्युक्त दृष्टिकोण को 'यूएनएविगेशन' आधारित अनुप्रयोग में करने की कोशिश की। इस दृष्टिकोण के साथ समस्या यह है कि विंडो पर एक छवि सेट करना। बैकग्राउंड छवि को सही तरीके से सेट करता है लेकिन अन्य दृश्य स्पष्ट रंग खराब होता है क्योंकि पुश या पॉप व्यू के दौरान खराब होता है ओवरलैपिंग आप स्टैक में धक्का देने वाले विचार देख सकते हैं। कोई विचार यह तय करने के लिए कि – Shekhu

8

आपके पास किस तरह का इंटरफ़ेस है इस पर निर्भर करता है। टैब किए गए? नेविगेशन आधारित? लेकिन सामान्य उत्तर यह है: अपने मुख्य दृश्य से पहले/नीचे अपने UIWindow पर UIImageView जोड़ें। फिर अपने मुख्य दृश्य नियंत्रक द्वारा संभाले गए प्रत्येक दृश्य को पारदर्शी पृष्ठभूमि बनाएं। यदि आप आईबी का उपयोग करते हैं या नहीं, या आपका दृश्य पदानुक्रम कैसा दिखता है, तो यह जानने के बिना और अधिक विशिष्ट सलाह देना मुश्किल है।

+1

नेविगेशन में इस assignbackground कहते हैं, इतनी के रूप में देखने के नियंत्रकों को धक्का दिया और पॉप कर रहे हैं पृष्ठभूमि रहता – Slee

+0

का मेल sudo का और Manni के सुझावों इसे पूरा करने के लिए आप क्या जरूरत है आसान बनाता है: सेट पृष्ठभूमि खिड़की पर एक छवि होने के लिए रंग (colorWithPatternImage :) और नेविगेशन नियंत्रक और उसके सभी उप-नियंत्रकों पारदर्शी पर पृष्ठभूमि रंग। आपको उन पर opaque = NO भी सेट करना पड़ सकता है। ध्यान रखें कि यह एनिमेशन के दौरान प्रदर्शन को प्रभावित कर सकता है, लेकिन नए उपकरणों पर कोई समस्या नहीं होनी चाहिए। – Felixyz

7

मेरे ऐप में, मैंने एक डिफ़ॉल्ट पृष्ठभूमि रंग सेट किया है। हो सकता है आप आप पृष्ठभूमि छवि के साथ ऐसा कर सकते हैं:

1 .: आपके AppDelegate में अपने UIWindow की पृष्ठभूमि का रंग सेट करें:

:

window.backgroundColor = [UIColor myBackgroundGray]; // own Category 

2 .: और अब, अन्य सभी दृश्यों को पारदर्शी बनाने के

self.view.backgroundColor = [UIColor clearColor]; // = transparent 
+1

यह एनीमेशन के साथ मोडल प्रस्तुतियों को प्रस्तुत करते समय एक गरीब ux का कारण बनता है। आप मोडल व्यू और मौजूदा दृश्य से नियंत्रण देख सकते हैं और फिर मौजूदा दृश्य गायब हो जाता है। –

2

आपकी पृष्ठभूमि किसी भी दृश्य-विरासत वस्तु की एक संपत्ति है। लेबल, बटन, नियंत्रक, और ऐप विंडो, उदाहरण के लिए, सभी में पृष्ठभूमि हैं। यदि आप पूरे ऐप के लिए पूरी तरह से एक बीजी होना चाहते हैं तो आपको बहुत ही "शीर्ष" (नीचे देखा गया) दृश्य खोजने के लिए अपने नियंत्रकों में पथ पर चढ़ना होगा, और अपनी पृष्ठभूमि को अपनी इच्छित छवि के रूप में सेट करना होगा।

7

अपने AppDelegate में

में
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

इस लाइन जोड़ें:

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]]; 

तुम सिर्फ [UIColor clearColor];

3

मैं प्रदर्शन निहितार्थ के बारे में सुनिश्चित नहीं कर रहा हूँ करने के लिए अपने विचार पृष्ठभूमि सेट करने के लिए करने के बाद, लेकिन मुझे कुछ ऐसा करने की ज़रूरत थी, और यूआईएममेज व्यू का उपयोग करके समाप्त हो गया जो अच्छी तरह से काम करता है (सी # में, लेकिन ओबीजे-सी में भी काम करता है):

//Add the view controller first, to ensure proper order of views later. 
Window.RootViewController = new UIViewController(); 

//create backdrop image view 
var imageView = new UIImageView(Window.Bounds); 
imageView.Image = UIImage.FromBundle("backdrop.jpg"); 

//insert into window. 
Window.InsertSubview(imageView, 0); 

यह अभिविन्यास परिवर्तनों को संभाल नहीं करता है, लेकिन मेरे मामले में, मुझे बैकड्रॉप (जैसे लंबन) पर गति प्रभाव जोड़ने की अनुमति दी गई है।

0

मैं आमतौर पर आईफोन पर नेविगेशन बार के साथ ओवरलैप से बचने के लिए इस फ़ंक्शन का उपयोग करता हूं।

-(void)setImageBackground:(NSString*)imageName{ 
    UINavigationController* navigationController = [self navigationController]; 
    float height = navigationController.toolbar.frame.size.height; 
    CGSize size = self.view.frame.size; 
    size.height = size.height; 
    UIGraphicsBeginImageContext(size); 
    CGRect bounds = self.view.bounds; 
    bounds.origin.y = bounds.origin.y + height; 
    bounds.size.height = bounds.size.height-height; 
    [[UIImage imageNamed:imageName] drawInRect:bounds]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
} 
0

सिर्फ आधारित viewDidLoad

override func viewDidLoad() { 
assignbackground() 
} 

func assignbackground(){ 
     let background = UIImage(named: "background") 

     var imageview : UIImageView! 
     imageview = UIImageView(frame: view.bounds) 
     imageview.contentMode = UIViewContentMode.ScaleAspectFill 
     imageview.clipsToBounds = true 
     imageview.image = background 
     imageview.center = view.center 
     view.addSubview(imageview) 
     self.view.sendSubviewToBack(imageview) 
    } 
संबंधित मुद्दे