0
我有一些代码,我在以前的项目中使用,并在那里工作正常。现在我使用这些旧代码作为解决当前项目中相同问题的指导原则。问题:现在正常工作的方法现在会崩溃我的应用程序。也许你们中的一个人看到我在这里做错了什么?ios:在自定义UITableViewCell崩溃应用程序中绘制CALayer
在我当前的项目中,我有一个自定义tableviewcell,它包含一个名为“VerlaufView”的自定义UIView。我在Interface Builder中连接了所有东西,并检查了它的工作正常。因此,这里是我的自定义的UIView:
接口定义:
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface VerlaufView : UIView {
CALayer* mainLayer;
}
@property (strong,nonatomic) CALayer* mainLayer;
-(void) initialisieren;
@end
这是落实。请注意,该实现包含内部类“VerlaufDelegate”,这将成为处理图层上的图形的代理。
#import "VerlaufView.h"
static bool debug = YES;
#pragma mark VerlaufDelegate
@interface VerlaufDelegate : NSObject {
UIView* layersParent;
}
@property (nonatomic,strong) UIView* layersParent;
-(id)initWithView:(UIView*)view;
@end
@implementation VerlaufDelegate
@synthesize layersParent;
-(id)initWithView:(UIView*)view {
if(debug) NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
self = [super init];
if(self)
self.layersParent = view;
if(debug) NSLog(@">>> Leaving %s <<<", __PRETTY_FUNCTION__);
return self;
}
- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx {
if(debug) NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
if(debug) NSLog(@">>> Leaving %s <<<", __PRETTY_FUNCTION__);
}
@end
@implementation VerlaufView
@synthesize mainLayer;
-(void) initialisieren
{
if(debug) NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
VerlaufDelegate* layerDelegate = [[VerlaufDelegate alloc] initWithView:self];
float width = 200; //320;
float height = 100; //259;
//Hauptlayer
mainLayer = [[CALayer alloc] init];
mainLayer.delegate = layerDelegate;
mainLayer.bounds = CGRectMake(0.f, 0.f, width, height);
/*mainLayer.backgroundColor = [[UIColor whiteColor] CGColor];
mainLayer.cornerRadius = 10.f;
CGFloat components[4] = { 0.0, 0.0, 0.0, 1.0 };
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGColorRef black = CGColorCreate(colorspace, components);
mainLayer.borderColor = black;
mainLayer.borderWidth = 1.f;
mainLayer.shadowRadius = 5.f;
mainLayer.shadowColor = black;
CGColorRelease(black);
CGColorSpaceRelease(colorspace);
mainLayer.shadowOffset = CGSizeMake(0.f, 5.f),
mainLayer.shadowOpacity = 0.75f;
*/
[self.layer insertSublayer:mainLayer above:self.layer];
[mainLayer setNeedsDisplay];
if(debug) NSLog(@">>> Leaving %s <<<", __PRETTY_FUNCTION__);
}
@end
所以我的代码在处理“initialisieren”方法时崩溃。