Пользовательский контроль навигации - PullRequest
1 голос
/ 13 сентября 2011

Я бы хотел использовать несколько техник, которые использует приложение Reeder для iPad:

http://reederapp.com/ipad/

В частности, я бы хотел иметь навигацию слева и использовать аналогичныемакет.

Как они это делают?Это просто стандартный навигационный контроллер, расположенный слева?Является ли расположение элементов / миниатюр просто настраиваемым представлением таблицы?Thx.

1 Ответ

0 голосов
/ 17 марта 2012

Это не стандартный навигационный контроллер. Вам придется создать свой собственный UIView, который прикрепляется к стороне и имеет свойство AutoresizingMask, установленное на UIViewAutoresizingFlexibleHeight. Настройте вид с помощью кнопок, которые вы хотите использовать, используя методы -drawRect: и -layoutSubviews:. В зависимости от того, сколько абстракций вы хотите сделать с вашим пользовательским представлением, вы можете сделать так, чтобы все кнопки отправляли сообщения на UIView, тогда это представление передавало бы эти сообщения делегату.

Пример:

@protocol SideNavigationBarDelegate
- (void)didTapButtonAtIndex:(NSUInteger)buttonIndex;
@end

@interface SideNavigationBar : UIView
@property (strong, nonatomic) id<SideNavigationBarDelegate> delegate;

- (id)initWithDelegate:(id<SideNavigationBarDelegate>)aDelegate;

- (void)addButtonWithIcon:(UIImage *)icon;

- (void)removeButtonAtIndex:(NSUInteger)index;

@end

@implementation SideNavigationBar
...
- (id)initWithDelegate:(id<SideNavigationBarDelegate>)aDelegate {
...
    [self setDelegate:aDelegate];
    [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    [self setFrame:CGRectMake(0.0f, 0.0f, 44.0f, [UIScreen mainScreen].bounds.size.height])];
...
}

- (void)addButtonWithIcon:(UIImage *)icon {
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.0f)];
UIImageView *iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.0f)];
[iconView setContentMode:UIViewContentModeScaleAspectFill];
[iconView setImage:icon];
[button addSubview:iconView];
...set the target and action for the button...
[[self buttons] addObject:button];
}

- (void)drawRect:(CGRect)rect { ...draw buttons on view... }

@end

Что касается миниатюр, которые являются настраиваемым представлением таблицы (или представлением сетки в данном случае). Вместо того, чтобы сделать свой собственный, взгляните на это: https://github.com/AlanQuatermain/AQGridView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...