转换(旋转)UIBarButtonItem

Pap*_*lli 11 rotation uibarbuttonitem cgaffinetransform

有人知道如何转换UIBarButtonItem吗?

我尝试了这个,但没有结果:(它不适用于UIBarButtonItem及其customview.

[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).

谢谢 !

小智 17

使用:

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


Bro*_*son 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;
Run Code Online (Sandbox Code Playgroud)