子类 UIView 错误

Posted

技术标签:

【中文标题】子类 UIView 错误【英文标题】:Sub Classing UIView Error 【发布时间】:2012-07-05 01:47:59 【问题描述】:

当我将 xib 类设置为 UIView 的子类,然后在 UIView 上设置animateWithDuration 时,我得到了

No visible @interface for 'UIView' declares the selector
'animateWithDuration:delay:options:animations:completion:' 

错误窗格显示这是一个 ARC 问题

我正在尝试在 UIView 上运行动画。

编辑:导致错误的代码

 [sampleSourceView.view animateWithDuration:1
                                             delay:1.0
                                           options: UIViewAnimationCurveEaseOut
                                        animations:^
                                            sampleSourceView.view.frame = sampleSourceFrame;
                                         
                                        completion:^(BOOL finished)
                                            NSLog(@"Done!");
                                        ];

        [self.view addSubview:sampleSourceView.view];

【问题讨论】:

你能贴出导致错误的代码吗? 【参考方案1】:

您收到错误是因为您尝试在 UIView 的实例上使用类方法。查看方法签名:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

加号表示它是一个类方法。实例方法会有一个减号。

试试这个:

[UIView animateWithDuration:1
                     delay:1.0
                   options: UIViewAnimationCurveEaseOut
                animations:^
                    sampleSourceView.view.frame = sampleSourceFrame;
                 
                completion:^(BOOL finished)
                    NSLog(@"Done!");
                ];

【讨论】:

以上是关于子类 UIView 错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIView 子类的惰性属性

UIView 框架和边界错误

命中测试 UIView 子类的填充区域

UIView 转换后拖动行为错误

Swift 3:编译器无法识别子类 UIView 的类型

Swift 错误 - 不可变值 '' 可能不会传入输出