web-dev-qa-db-ja.com

iOSで長方形を描く

私のアプリの目標は、ユーザーがiPhone画面の左右にスワイプすることで、さまざまなスケジュールオプションを並べ替えることができるようにすることです。ユーザーがこれらのさまざまなスケジュールオプションを並べ替えるときに、長方形を描画および削除するにはどうすればよいですか?

操作するUIViewController.h、UIViewController.m、およびUIViewController.xibファイルがあります。別のUIViewクラスが必要ですか?もしそうなら、どうすればそのUIViewクラスを.xibファイルのビューに接続できますか?

10
Bryce Langlotz

うわー...非常に多くの複雑な解決策、ここにあなたが必要なものがあります:

UIView *myBox  = [[UIView alloc] initWithFrame:CGRectMake(180, 35, 10, 10)];
myBox.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:myBox];

他に何もありません...実装に夢中になる必要はありません。

23
// 1st Add QuartzCore.framework to your project's "Link Binary with Libraries".

// 2nd Import the header in your .m file (of targeted view controller):

#import <QuartzCore/QuartzCore.h>

// 3rd Inside - (void)viewDidLoad method:
// Create a UIBezierPath (replace the coordinates with whatever you want):
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(10.0, 10.0)];
// # Entry Point with 10px white frame
[path moveToPoint:CGPointMake(10.0, 10.0)];
// # Keeping 10px frame with iPhone's 450 on y-axis
[path addLineToPoint:CGPointMake(10.0, 450.0)];
// # Substracting 10px for frame on x-axis, and moving 450 in y-axis
[path addLineToPoint:CGPointMake(310.0, 450.0)];
// # Moving up to 1st step 10px line, 310px on the x-axis
[path addLineToPoint:CGPointMake(310.0, 10.0)];
// # Back to entry point
[path addLineToPoint:CGPointMake(10.0, 10.0)];

// 4th Create a CAShapeLayer that uses that UIBezierPath:
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [[UIColor blueColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
Add that CAShapeLayer to your view's layer:

// 5th add shapeLayer as sublayer inside layer view
[self.view.layer addSublayer:shapeLayer];
12
Jeremiah Smith

まず、CustomViewを作成します。

#import <UIKit/UIKit.h>

@interface MyView : UIView

@end

#import "MyView.h"

@implementation MyView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing Rect
    [[UIColor redColor] setFill];               // red
    UIRectFill(CGRectInset(self.bounds, 100, 100));
}


@end

あなたがテストします。 AppDelegateまたはViewControllerへのリンク

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
    MyView* view = [[MyView alloc]initWithFrame:CGRectMake(10, 30, 300, 400)];
    view.backgroundColor = [UIColor blackColor];
    [window addSubview:view];

    [self.window makeKeyAndVisible];

    return YES;
}

- (void)viewDidLoad
{
    MyView* view = [[MyView alloc]initWithFrame:CGRectMake(10, 30, 300, 400)];
    view.backgroundColor = [UIColor blackColor];
    [self.view addSubview:view];

    [super viewDidLoad];
}
5
bitmapdata.com

これを使用して長方形を描くことができます:

 UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(68, 38, 81, 40)];
 [UIColor.grayColor setFill];
 [rectanglePath fill];
5
Teja Nandamuri

UIViewはたまたま長方形の形で描画されるため、長方形の色を変更するだけでよい場合は、UIViewのbackgroundColorプロパティを目的の色に設定します。あります。

空のUIViewは次のことを行います。

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)];
view.backgroundColor = [UIColor redColor];

Interface Builderから実行している場合は、新しいビューをライブラリからキャンバスにドラッグし、ビューのプロパティで背景色を設定します。

単純なケースでは、おそらくカスタムビューは必要ありません。テキストを表示するためのUILabelなど、「長方形」ビューにアイテムを追加することもできます。

3
Kekoa