2009-11-19 3 views
6

Есть ли способ добавить значок увеличительного стекла вместо точки для моей первой страницы, что позволяет выполнять поиск с использованием UIPageControl для моего родного приложения на iPhone?UIPageControl dot для страницы поиска

Я пытался использовать Google, но не нашел похожих вопросов вообще, но он выглядит как широко распространенная функция в приложениях Apple.

Может ли кто-нибудь помочь мне с советом?

ответ

7

В основном UIPageControl имеет массив _indicators, который содержит UIViews для каждой из точек. Этот массив является частной собственностью, поэтому вам не следует возиться с ним. Если вам нужны пользовательские значки, вам нужно будет выполнить свою собственную реализацию индикатора страницы.

Редактировать: После нескольких исследований вы можете заменить подпункты UIPageControl для настройки точечных изображений. Проверьте http://www.onidev.com/2009/12/02/customisable-uipagecontrol/ для деталей. Все еще не уверен, что Apple рецензенты будут думать о том, чтобы делать что-то подобное.

+0

Спасибо за ваш ответ! Я надеялся на последнее, что этого не будет: -/ – Denis

+0

Я достиг своей цели, добавив под-просмотр в UIPageControl над значком поиска (пришлось потратить некоторое время, чтобы узнать его алгоритм размещения) , Он работает так же, как это необходимо. Как бы то ни было, я должен отправить небольшую вину на сторону Apple за то, что не разрешил эту настройку из коробки. – Denis

+1

Мы отправили приложения, используя технику, описанную в ссылке, которую вы дали без каких-либо проблем. – hennes

1

Я создал подкласс UIPageControl для достижения этого легко и юридически (без частных API). В основном, я перезаписал setNumberOfPages: вставьте UIImageView с иконой внутри последнего круга. Затем в методе setCurrentPage: я обнаруживаю, что если последняя страница подсвечивается или нет, чтобы изменить состояние UIImageView, а также очистить цвет фона круга, так как это будет автоматически обновляться частными API-интерфейсами UIPageControl.

Это результат: enter image description here

Это код:

@interface EPCPageControl : UIPageControl 
@property (nonatomic) UIImage *lastPageImage; 
@end 

@implementation EPCPageControl 

- (void)setNumberOfPages:(NSInteger)pages 
{ 
    [super setNumberOfPages:pages]; 

    if (pages > 0) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     if (indicator.subviews.count == 0) { 

      UIImageView *icon = [[UIImageView alloc] initWithImage:self.lastPageImage]; 
      icon.alpha = 0.5; 
      icon.tag = 99; 

      [indicator addSubview:icon]; 
     } 
    } 
} 

- (void)setCurrentPage:(NSInteger)page 
{ 
    [super setCurrentPage:page]; 

    if (self.numberOfPages > 1 && self.lastPageImage) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     UIImageView *icon = (UIImageView *)[indicator viewWithTag:99]; 
     icon.alpha = (page > 1 && page == self.numberOfPages-1) ? 1.0 : 0.5; 
    } 
} 
+0

Спасибо. Это очень помогло мне. Я нашел его намного чище, чем другой подход! – kekub

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