因此,当我尝试将自定义颜色设置为UIBarButton时,会导致显示的按钮太大,并向下延伸到NavigationBar并进入应用程序的主视图。有没有一种简单的方法来解决这个问题?这是我的代码:
UIImage *buttonColor = [[UIImage imageNamed:@"blue-background.jpg"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:buttonColor forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
答案 0 :(得分:0)
尝试使用UIEdgeInsetsMake
函数的值。
在我的一个应用程序中,它看起来像这样;
UIImage *backbuttonimage = [[UIImage imageNamed:@"backbutton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 10)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backbuttonimage
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
它按照我的意愿制作了...如果你有任何问题我希望你告诉我,如果你能添加一张照片,看看我是如何理解这个问题的。
这些是我的应用的价值观:
UIEdgeInsetsMake(0, 15, 0, 10)
度过愉快的一天:)
答案 1 :(得分:0)
这就是我制作自定义UIBarButtonItem
的方式,它对我来说非常适合。试试这个:
UIButton *postView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 61, 30)];
[postView setTitle:@"Post" forState:UIControlStateNormal];
[postView addTarget:self action:@selector(showAddPost) forControlEvents:UIControlEventTouchUpInside];
[postView setBackgroundImage:[UIImage imageNamed:@"bbi_texture.png"] forState:UIControlStateNormal];
[postView setBackgroundImage:[UIImage imageNamed:@"bbi_texture.png"] forState:UIControlStateHighlighted];
UIBarButtonItem *postButton = [[UIBarButtonItem alloc] initWithCustomView:postView];
[self.navigationItem setRightBarButtonItem:postButton];