Rotate UIBarButtonItem

前提是你 提交于 2019-12-01 08:58:54

Have you tried using a custom view inside the UIBarButtonItem that you then transform any way you want?

UIBarButtonItem does not extend UIView, so it cannot be transformed directly. You can add the UIBarButtonItem you wish to transform to a UIToolbar, transform the UIToolbar and then add the toolbar as a custom view to another UIBarButtonItem. This item can then be set as a navigation item or added to another UIToolbar. However, if you are using a custom view or image then Emil's approach in the comment above is best.

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;

You could put a UIButton inside a Bar Button Item, than rotate the UIButton.

I extended UIToolBar, giving access to its subviews, and in it have a function rotate that rotates the buttons in the opposite direction of the bar:

- (void)rotate: (int)degrees{
    //for the bar
    self.transform=CGAffineTransformMakeRotation(DegreesToRadian(degrees));
    //for the subviews (UIBarButtonItems)
    for (UIView * subView in self.subviews)
    {
        if(!CGRectEqualToRect(subView.bounds, self.bounds))
            subView.transform =   CGAffineTransformMakeRotation(DegreesToRadian(-degrees));
    }

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