小编Rob*_*tal的帖子

iOS 5:如何实现自定义(图像)后退按钮

我已经在我的博客上完成了教程,所以我知道如何制作一个可以显示底部(堆栈)viewcontroller标题的可伸缩按钮.但我希望做的是有图标(比如HOME的房子),没有文字,也没有调整大小.

使用我的自定义图像和下面的代码,我得到一个拉伸版本(不想要),标题超过顶部(不想要),它点击时突出/突出显示(很好);

UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

屏幕截图1

现在,我在这里搜索并阅读所有返回旧答案的类似问题,并为我做了奇怪的结果.这是我试过的代码;

  UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
  UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:backButtonImage style:UIBarButtonItemStyleBordered target:nil action:nil];
  self.navigationItem.backBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)

这个方法不会拉伸我的自定义图像按钮(很好),也不会显示文本(我想要的)但是它下面仍然有原始的蓝色按钮(WTF),并且我的自定义按钮在点击时不会着色,只有它下面的蓝色按钮呢!

屏幕截图2

请帮忙,我错过了什么?

*更新

我使用可调整大小的图像修改了一下.这迫使它不要'伸展'

UIImage *backButtonHomeImage = [[UIImage imageNamed:@"backButtonHomeWhite_30.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage  forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

要修复出现在我必须做的按钮上的标题

self.title =@" ";
Run Code Online (Sandbox Code Playgroud)

现在这是一个肮脏的修复,但它似乎工作.现在唯一的问题是我想在不同的视图上使用不同的后退按钮,这种方法会造成一些麻烦; 设置按钮的最后一个视图会覆盖所有其他视图.因此,最终,根据您在应用程序中的导航方式,返回到上一个视图时会出现错误的后退按钮,并且它永远不会重置为正确的后退按钮.


更新2:潜在想法:

以下是一个合理的解决方案,还是一个容易破坏的黑客?

隐藏默认后退按钮,就像这样,

[self.navigationItem setHidesBackButton:YES animated:NO];
Run Code Online (Sandbox Code Playgroud)

...然后使用自定义UIBarButtonItem,其中我实际想要放置在后退按钮位置的样式中的按钮,在点击时将popViewControllerAnimated:消息发送到UINavigationController.

如果您知道更强大的解决方案,请分享,谢谢.

iphone objective-c uibarbuttonitem ios ios5

12
推荐指数
2
解决办法
2万
查看次数

试图嵌入PPSSignatureView对象

我正在尝试实现此类,以便我可以在我的应用程序中捕获签名:

PPSSignatureView *sign = [[PPSSignatureView alloc] initWithFrame:CGRectMake(10, 10, 500, 300)];
GLKViewController *glkView = [[GLKViewController alloc] init];
glkView.view = sign;
[self.view addSubview:glkView.view];
Run Code Online (Sandbox Code Playgroud)

我之前没有使用任何openGL组件,所以我不确定我是否正确设置了它.

(PPSSignatureView是GLKView的子类)

xcode opengl-es objective-c ios glkview

3
推荐指数
1
解决办法
984
查看次数

标签 统计

ios ×2

objective-c ×2

glkview ×1

ios5 ×1

iphone ×1

opengl-es ×1

uibarbuttonitem ×1

xcode ×1