Latest 1.6
Homepage https://github.com/lucamozza/LMArticleViewController
License MIT
Platforms ios 9.0
Dependencies ColorArt, TLYShyNavBar, IDMPhotoBrowser

License
Platform
Version

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.
Preview 1
Preview 2

Features

The layout is shown in the images above, here’s some extra features.

Animations

  • [x] The navigation bar shrinks when you scroll down.
  • [x] The image view stretches when the scrollview bounces ( just like Facebook’s Instant Articles).

Appereance

  • [x] You can set custom fonts for all the text.
  • [x] Supports NSAttributedString in the body.
  • [x] Supports automatic background color and automatic light/dark text color.

Installation

LMArticleViewController is available through CocoaPods. Simply add the following line to your Podfile.

pod 'LMArticleViewController'

Usage

You can either subclass LMArticleViewController and set the contents in the viewDidLoad: method or instantiate an LMArticleViewController object, set its properties and present it.

Case A: Subclass

- (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];

}

Case B: Init and push

- (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];
}

To-Do List

  • [ ] Adjust image view size and proportions.

Latest podspec

{
    "name": "LMArticleViewController",
    "version": "1.6",
    "summary": "An Objective-C subclass of UIViewController inspired by Apple News",
    "description": "This subclass of UIViewController provides an article view controller with one top image, title, date, author and body labels.",
    "homepage": "https://github.com/lucamozza/LMArticleViewController",
    "license": {
        "type": "MIT",
        "file": "license.txt"
    },
    "authors": "Luca Mozzarelli",
    "platforms": {
        "ios": "9.0"
    },
    "source": {
        "git": "https://github.com/lucamozza/LMArticleViewController.git",
        "tag": "v1.6"
    },
    "source_files": [
        "LMArticleViewController",
        "LMArticleViewController/**/*.{h,m}"
    ],
    "dependencies": {
        "ColorArt": [],
        "TLYShyNavBar": [],
        "IDMPhotoBrowser": []
    }
}

Pin It on Pinterest

Share This