This framework allows you to create Apple News-inspired UIViewControllers with ease.
It is heavily inspired by MRArticleViewController, in fact the core is a simple translation of it. However I added some features I thought could be useful.
The layout is shown in the images above, here's some extra features.
- The navigation bar shrinks when you scroll down.
- The image view stretches when the scrollview bounces ( just like Facebook's Instant Articles).
- You can set custom fonts for all the text.
- Supports
NSAttributedString
in the body. - Supports automatic background color and automatic light/dark text color.
LMArticleViewController is available through CocoaPods. Simply add the following line to your Podfile.
pod 'LMArticleViewController'
You can either subclass LMArticleViewController
and set the contents in the viewDidLoad:
method or instantiate an LMArticleViewController object, set its properties and present it.
- (void)viewDidLoad {
// Set custom fonts
// Size doesn't matter here, the super class overrides with default values
[self setHeadlineFont:[UIFont fontWithName:@"Nexa Bold" size:1]];
[self setAuthorFont:[UIFont fontWithName:@"Roboto-Regular" size:1]];
[self setDateFont:[UIFont fontWithName:@"Roboto-Regular" size:1]];
// Set contents
self.headline = self.dataDictionary[k_TITLE];
self.image = self.dataDictionary[k_IMAGE];
self.author = self.dataDictionary[k_AUTHOR];
self.attributedBody = self.dataDictionary[k_BODY];
self.date = self.dataDictionary[k_DATE];
// IMPORTANT! Setup must happen before [super viewDidLoad]!!
[super viewDidLoad];
}
- (void)openArticleWithContents:(NSDictionary *)dataDictionary {
LMArticleViewController* articleViewController = [[LMArticleViewController alloc]init];
[articleViewController setBodyFont:[UIFont fontWithName:@"Roboto-Medium" size:1]];
articleViewController.headline = dataDictionary[k_TITLE];
articleViewController.image = dataDictionary[k_IMAGE];
articleViewController.author = dataDictionary[k_AUTHOR];
articleViewController.attributedBody = dataDictionary[k_BODY];
articleViewController.date = dataDictionary[k_DATE];
[self.navigationController pushViewController:articleViewController animated:YES];
}
- Adjust image view size and proportions.