Это не стандартный навигационный контроллер. Вам придется создать свой собственный 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