andrusha
andrusha

Reputation: 183

iOS set background color for all viewcontroller self.view's

Is there a way to set same background image for all views?

Setting same background in all viewDidLoad: methods. It's not cool.

Upvotes: 18

Views: 10061

Answers (4)

Anilkumar iOS Developer
Anilkumar iOS Developer

Reputation: 3755

I guess you can use Method Swizzling kind some feature to change all views colour or image setting.

Check following

https://wiredcraft.com/blog/method-swizzling-ios/

Upvotes: 0

Janusz Chudzynski
Janusz Chudzynski

Reputation: 2710

You can create a custom class, let's call it a TemplateView, which is subclass of UIView. Then using xib/storyboards select the controller view and identity inspector change the Class property to 'TemplateView'.

Subsequently using an UIAppearance change the background color of the template view to the desired one.

 [[TemplateView appearance]setBackgroundColor:[UIColor blueColor]];

That will change the background color of each of the template views in your project. I think it's better solution than

[[UIView appearance] setBackgroundColor:[UIColor redColor]];

because we don't change the background of everything, just our custom class. Hope it will help.

Upvotes: 11

jimpic
jimpic

Reputation: 5520

I don't think this is a good idea, but if you really want to do this, you could do something like this:

- (void)setBGColor:(UIColor *)color forAllSubviewsOf:(UIView *)view
{
    [view setBackgroundColor:color];
    for (UIView *sub in view.subviews)
        [self setBGColor:color forAllSubviewsOf:sub];
}

Upvotes: 0

Cfr
Cfr

Reputation: 5133

Yes, using UIAppearance in iOS5+:

[[UIView appearance] setBackgroundColor:[UIColor redColor]];

NOTE: UIView conforms to <UIAppearance, UIAppearanceContainer> protocols but does not mark any properties as UI_APPEARANCE_SELECTOR for some reason.

Upvotes: 2

Related Questions