【问题标题】:Swift, Access parent properties in child classSwift,访问子类中的父属性
【发布时间】:2014-11-27 04:03:40
【问题描述】:

我的问题是我不知道如何访问子类中的父属性

class imageOverlayRenderer: MKOverlayRenderer {
var bar = self.overlay
}

MKOverlayRenderer 应该有属性覆盖

我真正想要的是编写一个MKOverlayRender的自定义子类来渲染图像,Objective C中的代码是:

#import <MapKit/MapKit.h>

@interface PVParkMapOverlayView : MKOverlayRenderer

- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage;

@end

#import "PVParkMapOverlayView.h"

@interface PVParkMapOverlayView ()

@property (nonatomic, strong) UIImage *overlayImage;

@end

@implementation PVParkMapOverlayView

- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage {
    self = [super initWithOverlay:overlay];
    if (self) {
        _overlayImage = overlayImage;
    }

    return self;
}

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
    CGImageRef imageReference = self.overlayImage.CGImage;

    MKMapRect theMapRect = self.overlay.boundingMapRect;
    CGRect theRect = [self rectForMapRect:theMapRect];

    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextTranslateCTM(context, 0.0, -theRect.size.height);
    CGContextDrawImage(context, theRect, imageReference);
}

@end

【问题讨论】:

    标签: ios class inheritance swift mkoverlay


    【解决方案1】:

    您不能在正常的属性声明中引用self - 您必须声明属性lazy

    class imageOverlayRenderer: MKOverlayRenderer {
        lazy var bar: MKOverlay! = self.overlay
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2013-07-30
      • 2023-02-04
      • 2019-08-24
      相关资源
      最近更新 更多