2017-02-01 2 views
-2

Как мне позвонитьКак звонить - (Недействительными) DrawRect: (CGRect) Прямоугольник

-(void)drawRect:(CGRect)rect 

в https://github.com/stkim1/MTImageMapView/blob/master/MTImageMapView/MTImageMapView.m

С другой UiViewController периодически NSTimer

+2

Почему вам нужно вызвать DrawRect() в качестве метода по умолчанию и будет вызывать автоматически во время инициализации. Укажите, почему вам нужно иногда называть drawract()? – CodeChanger

+1

У вас есть экземпляр этого вида карты в UIView на вашем UIViewController? Просто вызовите 'setNeedsDisplay' в этом представлении, и он позаботится о перерисовке. Вы не должны напрямую обращаться к drawRect - он будет вызван управляющим классом по требованию – Russell

+0

CodeChanger - на самом деле я хотел показать маркер местоположения в состоянии, и мне нужно обновить маркер в другое состояние с каждой секундой, у меня есть сделал логику, чтобы показать маркер местоположения и к какому состоянию он должен идти дальше, но не может обновить вид – rva

ответ

3

От documentation:

Обсуждение

По умолчанию реализация этого метода ничего не делает. Подклассы , которые используют такие технологии, как Core Graphics и UIKit для рисования своего содержимого , должны переопределить этот метод и реализовать их код . Вам не нужно переопределять этот метод, если ваше представление устанавливает его содержимое другими способами. Например, вам не нужно переопределять этот метод, если в вашем представлении отображается только цвет фона или если ваш вид устанавливает его содержимое напрямую, используя объект нижнего слоя.

...

Если подкласс UIView непосредственно, ваша реализация этого метода не нужно называть супер. Однако, если вы подклассифицируете класс вида , вы должны вызвать супер в какой-то момент в своей реализации .

Этот метод вызывается при первом просмотре представления или при возникновении события , которое делает недействительными видимую часть представления. Вы никогда не должны назовите этот метод непосредственно собой. Чтобы аннулировать часть вашего вида, и, таким образом, вызвать эту часть для перезаписи, вызовите вместо этого метод setNeedsDisplay или setNeedsDisplayInRect:.

0

ДА Я нашел решение я вызов функции с таймером в конце drawrect функции и вызывая setNeedsDisplay() в нем

Смежные вопросы