【问题标题】:Rotate UIBarButtonItem旋转 UIBarButtonItem
【发布时间】:2011-05-06 03:37:15
【问题描述】:

我想旋转UIBarButtonItem

我已经能够使用setTransform:CGAffineTransformMakeRotation(…)UIButtons 执行此操作,但UIBarButtonItem 没有此属性。

我知道相机应用可以做到这一点,所以它应该是可以实现的。
我怎样才能做到这一点?

谢谢。

【问题讨论】:

    标签: iphone objective-c rotation uibarbuttonitem


    【解决方案1】:

    您是否尝试过在 UIBarButtonItem 中使用自定义视图,然后以任何您想要的方式进行转换?

    【讨论】:

    • 您的意思是创建一个带有图像的 UIButton,并将其设置为 UIBarButtonItem 的 customView?
    • 差不多。希望这能澄清我的对象层次结构:使用自定义视图初始化 UIBarButtonItem。这个自定义视图是一个 UIButton。按钮的背景视图是 UIImageView。
    【解决方案2】:

    UIBarButtonItem 没有扩展 UIView,所以不能直接转换。您可以将要转换的 UIBarButtonItem 添加到 UIToolbar,转换 UIToolbar,然后将工具栏作为自定义视图添加到另一个 UIBarButtonItem。然后可以将此项目设置为导航项目或添加到另一个 UIToolbar。但是,如果您使用的是自定义视图或图像,那么上面评论中 Emil 的方法是最好的。

    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;
    

    【讨论】:

      【解决方案3】:

      您可以将 UIButton 放在 Bar Button Item 中,而不是旋转 UIButton。

      【讨论】:

        【解决方案4】:

        我扩展了 UIToolBar,允许访问它的子视图,并且在其中有一个函数 rotate,它可以将按钮向栏的相反方向旋转:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-28
          相关资源
          最近更新 更多