Created
March 12, 2015 17:05
-
-
Save bhr/78758bd0bd4549f1cd1c to your computer and use it in GitHub Desktop.
Custom Title View for Navigation Bar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// BHRCustomTitleView.h | |
// NA | |
// | |
// Created by Benedikt Hirmer on 3/12/15. | |
// Copyright (c) 2015 HIRMER.me. All rights reserved. | |
// | |
#import <UIKit/UIKit.h> | |
@interface BHRCustomTitleView : UIView | |
@property (nonatomic, strong, readonly) UILabel *titleLabel; | |
@property (nonatomic, strong, readonly) UIButton *previousButton; | |
@property (nonatomic, strong, readonly) UIButton *nextButton; | |
@end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// BHRCustomTitleView.m | |
// NA | |
// | |
// Created by Benedikt Hirmer on 3/12/15. | |
// Copyright (c) 2015 HIRMER.me. All rights reserved. | |
// | |
#import "BHRCustomTitleView.h" | |
@interface BHRCustomTitleView () | |
@property (nonatomic, strong) UILabel *titleLabel; | |
@property (nonatomic, strong) UIButton *previousButton; | |
@property (nonatomic, strong) UIButton *nextButton; | |
@property (nonatomic, copy) NSArray *constraints; | |
@end | |
@implementation BHRCustomTitleView | |
- (void)updateConstraints | |
{ | |
if (self.constraints) { | |
[self removeConstraints:self.constraints]; | |
} | |
NSDictionary *viewsDict = @{ @"title": self.titleLabel, | |
@"previous": self.previousButton, | |
@"next": self.nextButton }; | |
NSMutableArray *constraints = [NSMutableArray array]; | |
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(>=0)-[previous]-2-[title]-2-[next]-(>=0)-|" | |
options:NSLayoutFormatAlignAllBaseline | |
metrics:nil | |
views:viewsDict]]; | |
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[previous]|" | |
options:0 | |
metrics:nil | |
views:viewsDict]]; | |
[constraints addObject:[NSLayoutConstraint constraintWithItem:self | |
attribute:NSLayoutAttributeCenterX | |
relatedBy:NSLayoutRelationEqual | |
toItem:self.titleLabel | |
attribute:NSLayoutAttributeCenterX | |
multiplier:1.f | |
constant:0.f]]; | |
self.constraints = constraints; | |
[self addConstraints:self.constraints]; | |
[super updateConstraints]; | |
} | |
- (UILabel *)titleLabel | |
{ | |
if (!_titleLabel) | |
{ | |
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; | |
_titleLabel.translatesAutoresizingMaskIntoConstraints = NO; | |
_titleLabel.font = [UIFont boldSystemFontOfSize:_titleLabel.font.pointSize]; | |
[self addSubview:_titleLabel]; | |
} | |
return _titleLabel; | |
} | |
- (UIButton *)previousButton | |
{ | |
if (!_previousButton) | |
{ | |
_previousButton = [UIButton buttonWithType:UIButtonTypeSystem]; | |
_previousButton.translatesAutoresizingMaskIntoConstraints = NO; | |
[self addSubview:_previousButton]; | |
_previousButton.titleLabel.font = [UIFont systemFontOfSize:23.f]; | |
[_previousButton setTitle:@"❮" | |
forState:UIControlStateNormal]; | |
} | |
return _previousButton; | |
} | |
- (UIButton *)nextButton | |
{ | |
if (!_nextButton) | |
{ | |
_nextButton = [UIButton buttonWithType:UIButtonTypeSystem]; | |
_nextButton.translatesAutoresizingMaskIntoConstraints = NO; | |
[self addSubview:_nextButton]; | |
_nextButton.titleLabel.font = [UIFont systemFontOfSize:23.f]; | |
[_nextButton setTitle:@"❯" | |
forState:UIControlStateNormal]; | |
} | |
return _nextButton; | |
} | |
+ (BOOL)requiresConstraintBasedLayout | |
{ | |
return YES; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment