你如何有效地覆盖父母计算的iVar?

时间:2016-11-08 01:30:52

标签: objective-c swift3 ivar

我试图将现有的Objective-C代码转换为其Swift 3.0等效代码。
我无法转换Objective-C范例,即在其后代中定义父母的声明的getter(评估者);进入等效的Swift 3.0' 计算iVar 范例。

目标-C
父母财产:

@property(nonatomic, readonly) CGRect frameOfPresentedViewInContainerView;

后代中定义属性:

- (CGRect)frameOfPresentedViewInContainerView
{
    CGRect containerViewBounds = self.containerView.bounds;
    CGSize presentedViewContentSize = [self sizeForChildContentContainer:self.presentedViewController withParentContainerSize:containerViewBounds.size];

    // The presented view extends presentedViewContentSize.height points from
    // the bottom edge of the screen.
    CGRect presentedViewControllerFrame = containerViewBounds;
    presentedViewControllerFrame.size.height = presentedViewContentSize.height;
    presentedViewControllerFrame.origin.y = CGRectGetMaxY(containerViewBounds) - presentedViewContentSize.height;
    return presentedViewControllerFrame;
}

<小时/> Swift 3.0
父母财产:

var frameOfPresentedViewInContainerView: CGRect { get }

当我尝试定义&#39; frameOfPresentedViewInContainerView&#39;的值时通过:

func frameOfPresentedViewInContainerView() -> CGRect {
        let containerViewBounds = self.containerView?.bounds;   // ...UIPresentationController  - iOS 10

}

我得到以下编译器错误:

  

方法&#39; frameOfPresentedViewInContainerView()&#39;与Objective-C   选择器&#39; frameOfPresentedViewInContainerView&#39;与吸气剂发生冲突   for&#39; frameOfPresentedViewInContainerView&#39;来自超类   &#39; UIPresentationController&#39;使用相同的Objective-C选择器

这是有道理的,也很明显。
那么覆盖父母计算(getter)变量的最佳方法是什么?

注意:父类是Apple的 UIPresentationController

1 个答案:

答案 0 :(得分:1)

覆盖var,就像在Swift界面中给出的那样:

override var frameOfPresentedViewInContainerView: CGRect {