0

ビューの中央に透明な正方形(境界線のみ)を描画しようとしていますが、その方法を見つけるのに非常に苦労しています。私には2つの問題があると思います。1つは黒い境界線のある透明な正方形を描くこと、もう1つはビューの中央に配置することです。

従うべき良いチュートリアルはありますか?

アップデート

私はAppleのチュートリアルに従おうとしましたが、ViewController内に長方形を描画するためのコードがあります。

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGRect rectangle = CGRectMake(60,170,200,80);
    CGContextAddRect(context, rectangle);
    CGContextStrokePath(context);

しかし、それを特定のビューまたはビューの中央に追加する方法がわかりません。

4

2 に答える 2

4

提供した描画コードは、そのdrawRectメソッドのカスタムUIViewサブクラスに配置する必要があります。

ただし、画面のどこかに長方形を表示しようとしている場合は、目的のサイズのサブビューを追加し、それに応じてそのレイヤープロパティを設定する方が簡単です。

#import <QuartzCore/QuartzCore.h>
//...
UIView *rectView = [[UIView alloc] initWithFrame:CGRectMake(60,170,200,80)];
rectView.backgroundColor = [UIColor clearColor];
rectView.layer.borderColor = [[UIColor blueColor] CGColor];
rectView.layer.borderWidth = 2.0;
[someView addSubview:rectView];
于 2012-10-23T19:00:37.277 に答える
3

問題のUIViewをサブクラス化し、そのdrawRectをオーバーライドしたいと思うかもしれません。

- (void)drawRect:(CGRect)rect

必ず電話してください:

[super drawRect:rect];

次に、描画しているビューのサイズに相対的な座標を描画コードで使用します。

したがって、次のようなものが得られます。

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGFloat width = 200;
    CGFloat height = 80;
    CGFloat x = (self.frame.size.width - width) * 0.5f;
    CGFloat y = (self.frame.size.height - height) * 0.5f;
    CGRect rectangle = CGRectMake(x, y, width, height);
    CGContextAddRect(context, rectangle);
    CGContextStrokePath(context);
}
于 2012-10-23T19:12:23.147 に答える