我试图将现有的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 。
答案 0 :(得分:1)
覆盖var,就像在Swift界面中给出的那样:
override var frameOfPresentedViewInContainerView: CGRect {