Próbuję dowiedzieć się, co robię źle tutaj. Próbowałem kilku rzeczy, ale nigdy nie widziałem tego nieuchwytnego prostokąta na ekranie. Teraz to wszystko, co chcę zrobić - wystarczy narysować pojedynczy prostokąt na ekranie.Pytanie dla początkujących użytkowników: rysowanie prostokąta. Co ja robię źle?
Otrzymuję "nieprawidłowy kontekst" na wszystko oprócz CGContextSetRGBFillColor(). Uzyskanie kontekstu po tym wydaje mi się trochę nie tak, ale nie jestem w domu patrząc na przykłady, których używałem ostatniej nocy.
Czy ja też zawiodłem coś innego? Naprawdę chciałbym, aby uzyskać co najmniej tyle zrobić dzisiaj ...
- (id)initWithCoder:(NSCoder *)coder
{
CGRect myRect;
CGPoint myPoint;
CGSize mySize;
CGContextRef context;
if((self = [super initWithCoder:coder])) {
NSLog(@"1");
currentColor = [UIColor redColor];
myPoint.x = (CGFloat)100;
myPoint.y = (CGFloat)100;
mySize.width = (CGFloat)50;
mySize.height = (CGFloat)50;
NSLog(@"2");
// UIGraphicsPushContext (context);
NSLog(@"3");
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, currentColor.CGColor);
CGContextAddRect(context, myRect);
CGContextFillRect(context, myRect);
}
return self;
}
Dzięki,
Sean.
Ponadto, nie powinieneś bezpośrednio wywoływać drawRect, ale wywołać setNeedsDisplay, więc system operacyjny odbiera go i przerysowuje widok później. – pgb
Tak. Zgadza się. –
Okay, więc nie powinienem używać initWithCoder() do rysowania. Ale czy to rzeczywiście odpowiada na moje pytanie? Czy przeniesienie kodu CG do innej funkcji spowoduje jakąkolwiek różnicę w tym, czy prostokąt zostanie narysowany? A jeśli chodzi o używanie/niewykorzystywanie drawRect, to teraz zdezorientowałeś mnie. Mówisz, że powinienem umieścić wszystkie parametry dla mojego prostokąta w drawRect? To też nie wydaje się właściwe - co, jeśli chcę narysować więcej niż jeden prostokąt? Jeśli istnieje prosta przykładowa aplikacja, która * właśnie * rysuje prostokąt lub kółko lub coś podobnego, chciałbym na to spojrzeć. Sean. –