Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An iBooks-like page-turning interface for iPhone and iPad apps using only public APIs.
Objective-C C
branch: twopages

This branch is 10 commits ahead, 1 commit behind ole:twopages

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
Classes Added on PDFViewController "next" and "previous" page button on navig…
Leaves.xcodeproj Added on PDFViewController "next" and "previous" page button on navig…
Leaves Added on PDFViewController "next" and "previous" page button on navig…
Other Sources Minor bugfixes.
Resources-iPad
Resources Changed the two page sample PDF (maybe a copyright violation...)
.gitattributes
.gitignore first commit
LICENSE
Leaves-Info.plist
Leaves_Prefix.pch More dir rearrangement.
README.markdown When user doubleTAP on screen, Leaves correctly position the image to…
main.m More dir rearrangement.

README.markdown

Leaves

Leaves is an simple way to present a page-turning interface similar to Apple's iBooks. It comprises two classes, LeavesView and LeavesViewController, and occupies less than 100 kB compiled. It uses only public APIs, sacrificing a portion of iBooks' visual flair to ensure that your application is safe for submission to the App Store.

This branch of Leaves supports:

  • Text, images, PDFs -- anything that can be rendered in a graphics context
  • Drag or tap to turn the page
  • iPad--sized display areas
  • Swipe gestures
  • Two-page landscape view

Leaves does not currently support:

  • Interactive elements on the page

This branch of Leaves requires iPhone OS 3.2 or later (support for UIGestureRecognizer).

Installation

Add the files in the Leaves subdirectory to your Xcode project and ensure that you are linking against QuartzCore.framework.

Getting Started

Creating a page-turning interface is as simple as subclassing LeavesViewController:

@interface ColorSwatchViewController : LeavesViewController
@end

...and implementing the LeavesViewDataSource protocol:

@implementation ColorSwatchViewController

- (NSUInteger) numberOfPagesInLeavesView:(LeavesView*)leavesView {
    return 10;
}

- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx {
    CGContextSetFillColorWithColor(ctx, [[UIColor colorWithHue:index/10.0 
                                                    saturation:0.8
                                                    brightness:0.8 
                                                         alpha:1.0] CGColor]);
    CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
}

@end

For more sophisticated examples, build the Xcode project included with Leaves.

Notes

Leaves is 100% free to use for any purpose, but donations are always appreciated and will allow me to spend more time making it the best UIView subclass it can be.

The best way to get an answer to your question about programming with Leaves is the Leaves Developers mailing list, which I keep an eye on. But if you find a bug, be sure to visit the tracker or message me directly.

Something went wrong with that request. Please try again.