2010-05-04 16 views
18

Jak wywołać drawRect programowo w obiektywnym c?Jak wywoływać drawRect programowo w celu c

Chcę wywołać metodę drawrect widoku w moim kontrolerem UItabbar. Jak mogę to zrobić? Dzięki z góry ..

Edit

mam zadzwonić, gdy widok nie jest widoczny obecnie. To będzie pierwszy raz, muszę zadzwonić do tego widoku

+4

Dlaczego chcesz narysować widok bez faktycznie umieszczenie go na ekranie? Ponadto nie powinieneś nigdy wywoływać 'drawRect:' bezpośrednio (z wyjątkiem 'super'). – bddckr

+0

Załóżmy, że nie wybieram pierwszej zakładki po uruchomieniu aplikacji. Z drugiej zakładki chcę wyświetlić pierwszą kartę ze zmianami zawartości. Zmiany w zawartości oznaczają, że muszę zmienić pole UITextfield itp. To, co się dzieje, to po raz pierwszy pole tekstowe wybranej zakładki nie ulega zmianie. Ale gdybym wybrał ponownie, to się zmieni. –

Odpowiedz

35
[myView.layer display]; 

Sił widok zwrócić się od razu.

[myView setNeedsDisplay: YES]; 

Wymusza przegląd odświeżania w następnym cyklu pętli zdarzeń.

Jeśli jednak chcesz zadzwonić, nawet jeśli nie jest widoczny, myślę, że coś jest nie w porządku z projektem twojej klasy widoku. Powinieneś tylko robić rysowanie wewnątrz drawRect: nic więcej. A jeśli tylko rysujesz, dlaczego to robisz, gdy widok nie jest widoczny?

+0

Istnieje przypadek, w którym chcesz wyrenderować go z ekranu, i to wtedy, gdy zamierzasz użyć zawartości widoku (np. zrób zrzut ekranu z tego lub innego) i buforuj lub używaj go gdzie indziej. W moim przypadku chcę zrobić zrzut ekranu widoku, który niekoniecznie jest widziany przez użytkownika i zapisać obraz tego widoku na dysku. – Kalle

+2

Nie jestem pewien, czy rozumiem to rozwiązanie. "UIView' nie ma metody" display ". –

+2

Jestem również zdezorientowany z tego samego powodu ... –

4
+0

Dzięki za odpowiedź. Ale setNeedsDisplay będzie wywoływać tylko wtedy, gdy widok jest widoczny. W moim stanie widok nie będzie widoczny. Przepraszam. moje pytanie było mylące. Zmieniono moje pytanie: –

0

view.layer.renderInContext(context: CGContext) może narysować zawartość twojego widoku w CGContext, np. bitmapa.

daje migawkę widoku.

1

Swift:

yourView.setNeedsDisplay() 

lub

yourView.setNeedsDisplay(newRect)