0

カスタム ビューを持つメインの ViewController で複数のカスタム UIView をメイン ビューに描画しようとしていますが、どういうわけかそれらが描画されず、ドットを描画しようとしています。

私のコードは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    MyCustomView *myView = (MyCustomView *)self.view;

    myView.xAxisLabel1 = @"customlabels 1";
    myView.xAxisLabel2 = @"customlabels 2";
    myView.xAxisLabel3 = @"customlabels 3";
    myView.xAxisLabel4 = @"customlabels 4";

    CustomDotView *newDot = [[CustomDotView alloc] initWithPointAtXCord:10 andYCord:10 withRadius:10 andColor:[UIColor redColor]];

    [self.view addSubview:newDot];


}

しかし、これは機能していません。私の CustomDotView のコンストラクターが正しいのか、それとも間違ったことをしているのだろうか

これは私の CustomDotView コンストラクターです

-(id)initWithPointAtXCord:(float)xCord andYCord:(float)yCord withRadius:(float)radius andColor:(UIColor *)color {

    self = [super init];
    self.color = color;
    self.xCordenate = xCord;
    self.yCordenate = yCord;
    self.radius = radius;

    return self;

}
- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 2.0);
    CGContextSetStrokeColorWithColor(context, color.CGColor);
    CGContextSetFillColorWithColor(context, color.CGColor);

    CGRect currentRect = CGRectMake(xCordenate, yCordenate, radius * 2 , radius * 2);

    NSLog(@"draw point?");

    CGContextAddEllipseInRect(context, currentRect);
    CGContextDrawPath(context, kCGPathFillStroke);
}

助言がありますか?

4

1 に答える 1

2

わかりました、先に進んでこれをXcodeで書きましたが、うまく機能します。これが私が思いつく最も単純な使用例です。これは空白の中にありますUIViewController

@implementation ViewController

- (void)viewDidLoad
{

    CustomDotView *newDot = [[CustomDotView alloc] initWithPointAtXCord:10 andYCord:10 withRadius:10 andColor:[UIColor redColor]];

    [self.view addSubview:newDot];

}

@end


@implementation CustomDotView

-(id)initWithPointAtXCord:(float)inputXCoord andYCord:(float)inputYCoord withRadius:(float)inputRadius andColor:(UIColor *)inputColor
{
    xCoord = inputXCoord;
    yCoord = inputYCoord;
    color = inputColor;
    radius = inputRadius;

    self = [super initWithFrame: CGRectMake(xCoord, yCoord, radius * 2, radius * 2)];

    self.backgroundColor = [UIColor clearColor];

    return self;

}
- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 1.0);
    CGContextSetStrokeColorWithColor(context, color.CGColor);
    CGContextSetFillColorWithColor(context, color.CGColor);


    CGContextAddEllipseInRect(context, rect);
    CGContextDrawPath(context, kCGPathFill);
}


@end

Dot を動かしたい場合は、フレームを変更するだけです。

于 2012-08-31T00:23:44.163 に答える