iOS5 Toolbar background image

不打扰是莪最后的温柔 提交于 2019-12-25 08:09:52

问题


I'm very new to iOS programming. I'm trying to set the toolbar background to a custom image. I'm also using storyboards. How do I go about that? Do I edit UIToolbar in the UI Kit framework? Do I need to change something in Storyboard?

Thanks,


回答1:


You can use UIToolbar's built-in -setBackgroundImage:forToolbarPosition:barMetrics: method:

// portrait
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Portrait.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

// landscape
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Landscape.png"] forToolbarPosition:UIToolbarPositionAny barMetrics: UIBarMetricsLandscapePhone];
  • YourToolbarBkg-Portrait.png will be 320x44 bkg image for portrait mode
  • YourToolbarBkg-Landscape.png will be 480x32 bkg image for landscape mode.



回答2:


UIToolbar inherits from UIView. This just worked for me:

[topBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:BAR_BKG_IMG]] autorelease] atIndex:0];

UPDATED

topBar ------ is the outlet of the UIToolBar u are using

use this code where u are creating ur UIToolBar the class which implements the UIToolbar.. plus tell me y r u using Toolbar whats ur main purpose for it




回答3:


Instead of editing UIToolBar, why not create a UIView of the same size and skin that however you would like? That would be easier if you are new.

Or if you want to override UIToolbar:

@implementation UIToolbar (CustomImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"image.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end



回答4:


Had a right faff with background images for ToolBars and NavBars. I know setting the background image of a NavBar and ToolBar is generally a doddle. But, when you're presenting modal VC's, for some insane reason, where a NavBar is being added and you DO change the background image, it appears to double in size. Altering the height has strange results.

My issue was where I was using a NavController all over my App, but needed a modal view for one or two aspects of it. Simple enough. However, I needed either a NavBar or ToolBar type header with a Done button to pop the VC off the stack. Again, not an issue. But I needed the NavBar or ToolBar to look the same as everywhere else in my App.

I settled on a ToolBar, seeing as the VC was being presented modally. So, there my ToolBar sat, in typical Apple-blue. Nice, but not how the rest of my App looked, where a blackened image was being used for each NavBar. Using the iOS 5 appearance proxy, I altered the background image of the ToolBar. And this worked. But, unless I had the UIImage in exactly the proportions and size expected by the Tool Bar, I was in a pickle. The image simply did not look right at all. So, I decided to create a UIIMageView, where I could control the content mode, then insert a subview onto the toolBar.

Take a look at my code below.

UIImageView *toolbarImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:NAV_BAR_BACKGROUND]];
    [toolbarImageView setFrame:[self.IBOToolBar bounds]];
[toolbarImageView setContentMode:UIViewContentModeScaleAspectFill];
[self.IBOToolBar insertSubview:toolbarImageView atIndex:1];

It's a bit of a fluff but I do hope this helps someone alter the image on their ToolBar.

NAV_BAR_BACKGROUND can be defined as follows:

#define NAV_BAR_BACKGROUND @"navBarBlackMattDarkSquare.png"


来源:https://stackoverflow.com/questions/10144369/ios5-toolbar-background-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!