【问题标题】:iOS UIImageView disappears after rotation M_PI_4iOS UIImageView 在旋转 M_PI_4 后消失
【发布时间】:2015-06-23 06:26:14
【问题描述】:

这里基本上发生的是,我正在向 UIBarButtonItem 添加一个自定义视图,并且我需要将其旋转 45deg ,如果旋转 90deg 或 180 旋转效果很好,但是当它小于 90 时对象得到变形,在 45 度时物体消失。 这是按钮和动画的 sn-ps。

UIImageView * menuImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"plus.png"]];
menuButton = [[UIBarButtonItem alloc] initWithCustomView:menuImage];
UITapGestureRecognizer * tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleMenuView:)];
[menuImage addGestureRecognizer:tap1];
[menuImage setUserInteractionEnabled:YES];
[menuImage.layer setShadowColor:[UIColor blackColor].CGColor];
[menuImage.layer setShadowOffset:CGSizeMake(ShadowSizeWidth, ShadowSizeHeight)];
[menuImage.layer setShadowOpacity:ShadowOpacity];
[menuImage.layer setShadowRadius:ShadowRadius];

[self.navigationItem setRightBarButtonItem:menuButton];

旋转:

[UIView animateWithDuration:animationRotateButtonDuration delay:0.0f options:UIViewAnimationCurveLinear animations:^{
    CGAffineTransform myTransform = CGAffineTransformMakeRotation(-M_PI_4);

    UIBarButtonItem * currentItem =  menuButton;

    currentItem.customView.transform = myTransform;

}completion:^(BOOL finished){
}];

【问题讨论】:

  • 我也在尝试旋转条形按钮项目的自定义视图并遇到同样的问题。其他视图按 M_PI_4 旋转就好了,所以我想知道这是否与 UIBarButtonItem(?)有关。
  • UIBarButtonItem 将自定义视图作为背景,现在实现这项工作的技巧是,我选择的自定义视图是一个 UIImageView,它有另一个 UIImageView 作为子项,我必须旋转第二个 UIImageView 来制作这项工作。我认为它与 UIBarButtonItem 有关。

标签: ios animation uiimageview rotation uibarbuttonitem


【解决方案1】:

使用anchorPoint并导入"QuartzCore/QuartzCore.h"

currentItem.customView.layer.anchorPoint = CGPointMake(1.0, 0.0);//it is not fixed point you have to change.

我认为这对你会有帮助。

【讨论】:

  • 感谢您的回答,但这似乎不起作用,适用于 M_PI_2 与 point(1.0,0.0) , (0.5,0.5) , (0.0,0.0).. 但没有't 对于 M_PI_4,图像会消失。
  • 试试这些点 (0.4, 0.1),(0.8, 0.3) 你必须改变直到你得到。这个问题只是因为anchorPoint并且在旋转之前添加了这条线。
【解决方案2】:

如果 UIImageView contentMode 设置为 UIViewContentModeScaleAspectFit 或其他缩放方面,旋转会导致图像消失。

将 contentMode 更改为 UIViewContentModeCenter 应该可以解决问题。

【讨论】:

    【解决方案3】:

    我遇到了和你一样的问题。我的问题是我在 viewDidLoad 中进行旋转。

    尝试在 viewDidAppear 中执行此操作,它对我有用。

    【讨论】:

      【解决方案4】:

      是的,我遇到了同样的问题。我在 viewDidLayoutSubViews 中做了一次调度中的所有事情.....这很奇怪 CGAffineTransformMakeRotation(M_PI_2);和 CGAffineTransformMakeRotation(M_PI);有效,但不是这个。如果有人知道这是否是一个报告的问题,我会喜欢这个链接。

      【讨论】:

        猜你喜欢
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 2014-01-14
        • 2013-03-16
        • 1970-01-01
        相关资源
        最近更新 更多