CGAfflineTransform与UIView和CoreGraphics发生冲突

时间:2012-03-07 16:15:34

标签: iphone objective-c ios core-animation core-graphics

我在我的应用程序中使用了UIView和CoreGraphics动画但是当我编译时,以下行给了我错误:

CGAffineTransform * baseDockTransform =(CGAfflineTransform *)[[[%c(SBIconController)sharedInstance] dock] transform];

以下是错误日志:

Tweak.xm:156:警告:找到名为'-transform'的多个方法 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:156:警告:使用' - (CGAffineTransform)转换' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CALayer.h:153:警告:还找到' - (CATransform3D)转换' Tweak.xm:156:错误:没有匹配函数来调用'UIView :: UIView(CGAffineTransform)'

编译器不知道使用哪种方法。我怎样才能解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

确保你正确地投射一切。 [object dock]可能会返回一个可以从中调用transform的对象,但除非你正确地转换它,否则编译器会抱怨。

尝试:

Instance *sbInstance = [%c(SBIconController) sharedInstance];
UIView *transformedView = [sbInstance dock]; // assuming that dock returns an instance of UIView
CGAffineTransform backDockTransform = transformView.transform;

以这种方式做事情不会有太大的开销,而且更容易阅读正在发生的事情。