开发者

Rotate UIBarButtonItem

I want to rotate a UIBarButtonItem.

I have been able to do this with UIButtons using setTransform:CGAffineTransformMakeRotation(…), but UIBarButtonItem does not have this property.

I know the Camera-app does this, so it should be achieveable.

Ho开发者_StackOverflow社区w can I achieve this?

Thanks.


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));
    }

} 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜