2014-02-18 3 views
-3

Я хочу нарисовать прямоугольник в моем ViewController2.Draw Rectangle in View

Я читал, что могу использовать 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 или другим классом пользовательского интерфейса.

Рисование прямоугольника, как @ user2277872 указал принимает CGRect как его кадр - Назначение это исходная точка в представлении (х) и его ширина и высота (с, d)

получить, что на ваш view controller view, вам нужно добавить его в качестве подзаголовка.

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

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

снова @ user2277872 показал, что вы можете сделать это в методе viewdidload

только думаю, что он не сказал вам, что вы должны записываемый

[self.view addSubview: v]; 

еще один момент отметить, как правило, белый по умолчанию, поэтому вам нужно установить цвет фона, если вы хотите его видеть

[v setBackgroundColor: [UIColor redColor]]; 

Yo u должен видеть прямоугольник в верхней части представления.

Поскольку вы используете раскадровки, вы можете просто перетащить представление на контроллер вида и установить его цвет и размер.

0

Внутри вашего метода -(void) viewDidLoad в файле .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, который рисует прямоугольник. Вы можете создать один поднабор UIView с borderColor и borderWidth.

Существует много вариантов. Нам нужно знать цель и желаемый эффект, чтобы дать вам лучший курс действий. Немного больше предыстории и вещей, которые вы пробовали, были бы очень полезны для предоставления вам правильного решения.

+0

Отредактированный вопрос – Carioni

+0

@Carioni Вы говорите, что попробовали 'drawRect', но имели некоторые ошибки. Отправьте код, который вы попробовали, и мы можем разрешить ошибки. До тех пор мы можем дать вам широкие идеи, а не реальные решения. – Putz1103

+0

Код только что добавлен – Carioni