使用transitionFromView和UIBarButtonItem customView

时间:2013-09-13 19:11:32

标签: ios uinavigationcontroller uibarbuttonitem uiviewanimation uiviewanimationtransition

我正试图在Apple应用的导航栏中翻转UIBarButtonItem,以便在曲目列表和专辑封面之间切换。

我已经在界面构建器的导航栏上拖了一个按钮,根据我的理解,将UIBarButtonItem插入按钮作为其customView

我正在使用以下方法来翻转按钮的customView,但最终会翻转整个导航栏!

我希望这是一个奇怪的模拟器故障,但它也发生在设备上。 有没有人遇到这个或看到我可能会出错的地方?

[UIView transitionFromView:self.mapToggleBarButton.customView
                    toView:self.mapToggleBarButton.customView
                  duration:0.5
                   options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {

}];

2 个答案:

答案 0 :(得分:0)

事实证明这正是UIView.transitionFromViewUIView.transitionWithView的预期行为...

动画将应用于您正在交换的对象的超级视图。你没有必要引用它或任何东西 - 只是一个简单的UIView来封闭按钮,翻转应该按预期工作!

我在这里写了一些:http://mathewsanders.com/animations-in-swift-part-two/

答案 1 :(得分:0)

在您的代码中,fromView似乎与toView相同,这就是没有动画的原因。例如:


    UIBarButtonItem *refresh = self.navigationItem.rightBarButtonItem;
    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"On.png"]];
    [UIView transitionFromView:((UIButton*)refresh.customView).imageView toView:imgView duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
       //
        UIButton *btn = ((UIButton*)refresh.customView);
        [btn setImage:[UIImage imageNamed:@"On.png"] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(tap:) forControlEvents:UIControlEventTouchUpInside];
    }];

请注意,在翻转动画后,您应重置UIButton,例如imageaction等。