我正在创建UIButton
,并将其添加到自定义UITabBar
中的UITabBarController
上方。
var button = new UIButton(new CGRect(x, y, 50, 50));
button.Layer.BorderWidth = 2;
button.Layer.CornerRadius = button.Frame.Height / 2;
button.SetImage(UIImage.FromBundle("Name"), UIControlState.Normal);
this.View.AddSubview(button);
this.View.LayoutIfNeeded();
当我尝试在图像视图上添加旋转变换时,它不会像我期望的那样在中心和z轴上旋转(并在我阅读的所有文档中找到)。
相反,它的动画效果有所不同。
无论是否在ImageView
或其图层上添加转换,都是一样的。
例如,这是30度(pi / 180 * 30
)和10度的旋转。
但是,当我将SublayerTransform
添加到按钮层时,它会按预期进行转换。这种方法的问题在于它无法与UIView.Animate
或CATransaction.Begin
进行动画处理。
Position
,AnchorPoint
,其他所有内容均设置为默认值。我也尝试过使用这些属性,但无济于事。
从图像中可以看到,这是一个+
信号,应该经过动画处理才能变成x
。
非常感谢任何提示。
我定义的3D转换是这样的:
CATransform3D.MakeRotation((float)(Math.PI / 180 * 45), 0, 0, 1)
以及像这样的普通人:
CGAffineTransform.MakeRotation((float)(Math.PI / 180 * 45))
答案 0 :(得分:1)
如果出于某种原因仅需要旋转按钮图像视图,请尝试以下操作:
button.ImageView.Layer.Transform = CATransform3D.MakeRotation((float)(Math.PI / 180 * 45), 0.0001f, 0.0001f, 1);
在将x和y值设置为0的情况下,似乎应该在x和y轴上旋转,尽管不应旋转。值为45度时,它也会同时旋转x和y,以便您看到图像边缘在上面(因此似乎将x和y旋转了90度),即消失了。为X和y设置一个较小的值似乎可以避免此错误。我要看看这是Xamarin独有的,还是iOS的东西。
编辑:我刚刚在Xcode的Obj-C中对此进行了测试,并得到了完全相同的行为,因此这不是Xamarin问题,而是iOS问题以及它如何处理UIButton中的UIImageView。对于UIButton中 not 的UIImageView,不会发生相同的问题。