无法对UIImageView应用多个转换

时间:2015-05-09 13:23:04

标签: xamarin xamarin.ios

我无法找出为什么我的转换不适用于Xamarin iOS中的UIImageView。

以下是代码:

CGAffineTransform transform = new CGAffineTransform();

transform.Rotate((float)Math.PI / 2);
transform.Scale(0.8f, 0.8f);

this.imageViewOverlay = new UIImageView
{ 
    ContentMode = UIViewContentMode.Center,
    BackgroundColor = UIColor.Clear,
    Opaque = false,
    Frame = new CGRect(0,0,this.View.Bounds.Width, this.View.Bounds.Height),
    Transform = transform
};

我以前做过的方式就像

Transform = CGAffineTransform.MakeRotation((float)Math.PI / 2)

但不幸的是,当你想要使用它两次时,第二个就是在之前清除转换。

我正在使用

Xamarin.iOS: 版本:8.6.0.41(商业版)

操作系统: Mac OS X 10.10.3

XCode:版本6.3.1(6D1002)

谢谢!

1 个答案:

答案 0 :(得分:2)

您的原始CGAffineTransform为空(全部为0),结构为默认值,为身份转换,您可以在其上构建内容。 IOW使所有后续调用(math ops)返回空的。

您可以从非空变换开始,例如

var transform = CGAffineTransform.MakeRotation((float)Math.PI / 2);
transform.Scale(0.8f, 0.8f);

或者您可以从身份转换开始,例如

var transform = CGAffineTransform.MakeIdentity ();
transform.Rotate ((nfloat) Math.PI / 2);
transform.Scale ((nfloat) 0.8f, (nfloat) 0.8f);