2014-02-18 46 views
-3

我想在我的ViewController2中绘制一个矩形。在视图中绘制矩形

我读到我可以使用CGRect,但我找不到如何去做。

我想代表一个房间,所以我可以在我在房间里的位置放置一个点。

我已经尝试过重写的drawRect的方法,但我有一些错误

enter image description here

我这个代码的尝试:

// rectangle.h 
#import <UIKit/UIKit.h> 
@interface Rectangle : UIView 
@property (nonatomic, assign) CGRect myRect; 
@end 

// rectangle.m 
#import "rectangle.h" 
@implementation Rectangle 
@synthesize myRect; 

- (void)drawRect:(NSRect)rect { 
// Drawing code here. 
CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetRGBFillColor(c, 1.0, 0.0, 0.5, 1.0); 
CGContextFillRect(c, myRect); 
} 
@end 

// ViewController2.m 
#import "ViewController2.h" 
#import "rectangle.h" 
@implementation ViewController2 

// Implement viewDidLoad to do additional setup after loading the view. 
- (void)viewDidLoad { 
[super viewDidLoad]; 
if(![self.view isKindOfClass:Rectangle]) 
{ 
    Rectangle *view = [[Rectangle alloc] initWithFrame:self.view.bounds]; 
    self.view = view; 
} 
[(rectangle*)self.view setMyRect:CGRectMake(120, 120, 80, 80)]; 
[self.view setNeedsDisplay]; 
} 
@end 

但这不起作用

+3

在提出基本问题之前,请尽量少做功课。 –

+0

我修改了你列出的代码,试试。我不确定你的'self.view'是你的自定义视图类(可以在IB中设置,不知道)。在您的自定义视图的绘图代码中添加一个断点并查看它是否被调用。从那里出发。 – Putz1103

回答

0

首先我不认为你理解CGRect是一个结构,而不是一个对象。它定义了一个矩形点的起点和大小,然后您需要使用UIView或另一个UI类。

绘制为@ user2277872表明一个矩形需要一个的CGRect作为它的框架 - 分配它在视图(XY)原点,它的宽度和高度(W,d)

来获取到您的视图控制器视图,您需要将其添加为子视图。

CGRect frame = CGRectMake(0,0,200,400);

然后做UIView * v = [[UIView alloc] initWithFrame:frame];

再次为@ user2277872表明你可以在viewDidLoad方法

只觉得他没有告诉你这样做是你应该写

[self.view addSubview: v]; 

另一点需要注意的是视图默认情况下通常是白色的,所以如果你想看到它,你需要设置背景颜色

[v setBackgroundColor: [UIColor redColor]]; 

Yo你应该在视图的顶部看到一个矩形。

当您使用故事板时,您可以将视图拖放到视图控制器并在其中设置颜色和大小。

0

.m文件中您的​​方法中,执行:

CGRect frame = CGRectMake(x, y, w, h) 
// you substitute x,y,w, and h for x position, y position, width, and height 

然后执行:

UIView *v = [[UIView alloc] initWithFrame:frame]; 

这就是你如何在代码中使用CGRectMake

希望有所帮助。

0

在视图控制器中有很多方法来绘制一个矩形(在代码中)。您可以创建一个CAShapeLayer并将其添加到您的视图。您可以覆盖drawRect:函数并使用核心图形进行绘制。您可以创建一个绘制矩形的GLView。您可以使用borderColor和borderWidth创建单个UIView子视图。

有很多选择。我们需要知道目的和期望的效果,以便为您提供最佳的行动方案。多一些背景知识和你尝试过的东西对于给你一个有效的解决方案会很有帮助。

+0

编辑问题 – Carioni

+0

@Carioni你说你尝试过'drawRect',但有一些错误。发布您尝试的代码,我们可以解决这些错误。在此之前,我们只能给你广泛的想法,而不是实际的解决方案。 – Putz1103

+0

刚刚添加的代码 – Carioni