Ну, вы технически можете это сделать, но это не поддерживается. Вы лучше следуете за предложением Дейва или читаете, если вы настаиваете.
Если вы исследуете subviews из UIRefreshControl
, выясняется, что он содержит одно подзону, класса _UIRefreshControlDefaultContentView
.
Если вы затем проверить подвидов этой точки зрения содержания в освежающей состоянии, он содержит следующее:
UILabel
UIActivityIndicatorView
UIImageView
UIImageView
Так технически в вашем обратный вызов UIControlEventValueChanged
случае вы можете сделать что-то вроде этого:
UIActivityIndicatorView *spinner = [[[[self.refreshControl subviews] lastObject] subviews] objectAtIndex:1];
spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
И это будет работать. Он также не нарушает Руководство по проверке приложений, так как он не использует частный API (просмотр подзаголовков представления и игра с ними с использованием общедоступного API является законным). Но имейте в виду, что внутренняя реализация UIRefreshControl
может измениться в любое время, и ваш код может не работать или даже сбой в более поздних версиях iOS.
Спасибо, это именно то, что мне нужно. Очень хорошо и многократно :) Также благодаря айой для первоначальной идеи :) –
Разве вы не должны называть '[super beginRefreshing];' в конце или в какой-то момент? – Hlung
Yup пропустил это. Я обновил свой ответ. – Mike