旋转UIBarButtonItem

11
有没有人知道如何转换UIBarButtonItem?
我尝试过以下代码,但是没有任何结果:( 它既不能在UIBarButtonItem上进行操作,也不能在其自定义视图上进行操作。
[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:5.0f]; CGAffineTransform myTransform = CGAffineTransformMakeRotation(M_PI_2); UIBarButtonItem *currentItem = [self.toolbarItems objectAtIndex:4]; currentItem.customView.transform = myTransform; [UIView commitAnimations];
我确认该变换可用于其他视图(我尝试使用self.view)。
谢谢!

你是否使用自定义视图初始化了UIBarButtonItem? - Mikayel Aghasyan
哎呀!没注意到日期 :) - Mikayel Aghasyan
2个回答

16

使用:

UIView *view = [backItem valueForKey:@"view"];
view.transform = CGAffineTransformMakeScale(-1, 1);

很棒的解决方案!有人可以确认这是否违反了苹果的指南吗? - ken

1

UIBarButtonItem并不继承UIView,因此不能直接进行转换。您可以将要转换的UIBarButtonItem添加到UIToolbar中,对UIToolbar进行转换,然后将工具栏作为自定义视图添加到另一个UIBarButtonItem中。然后可以将此项设置为导航项或添加到另一个UIToolbar中。

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(handleForwardItemTouch:)];

UIToolbar *backToolbar = [[[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 44, 44)] autorelease];
[backToolbar setTransform:CGAffineTransformMakeScale(-1, 1)];

UIBarButtonItem *backToolbarItem = [[[UIBarButtonItem alloc] initWithCustomView:backToolbar] autorelease];
self.navigationItem.rightBarButtonItem = backToolbarItem;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接