diff --git a/Classes/Controllers/PageController.h b/Classes/Controllers/PageController.h index 191932f..e6261fd 100644 --- a/Classes/Controllers/PageController.h +++ b/Classes/Controllers/PageController.h @@ -7,11 +7,13 @@ // #import +#import "AKOMultiColumnTextViewDataSource.h" + @class AKOMultiPageTextView; @class AKOCustomFontLabel; -@interface PageController : UIViewController +@interface PageController : UIViewController { @private AKOMultiPageTextView *_multiPageView; diff --git a/Classes/Controllers/PageController.m b/Classes/Controllers/PageController.m index dec1cda..78e3d47 100644 --- a/Classes/Controllers/PageController.m +++ b/Classes/Controllers/PageController.m @@ -47,15 +47,30 @@ - (void)viewDidLoad self.fontSize = 24.0; + + self.multiPageView.dataSource = self; + self.multiPageView.columnInset = CGPointMake(50, 30); self.multiPageView.text = [NSString stringFromFileNamed:@"lorem_ipsum.txt"]; self.multiPageView.font = [UIFont fontWithName:@"Georgia" size:self.fontSize]; - self.multiPageView.columnCount = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? 3 : 4; + self.multiPageView.columnCount = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? 2 : 3; UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(changeTextSize:)] autorelease]; [self.multiPageView addGestureRecognizer:pinchRecognizer]; } +- (UIView*)akoMultiColumnTextView:(AKOMultiColumnTextView*)textView viewForColumn:(NSInteger)column onPage:(NSInteger)page +{ + if (page == 0 && column == 1) + { + UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)] autorelease]; + view.backgroundColor = [UIColor redColor]; + return view; + } + + return nil; +} + - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; @@ -71,11 +86,11 @@ - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interf { if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { - self.multiPageView.columnCount = 3; + self.multiPageView.columnCount = 2; } else { - self.multiPageView.columnCount = 4; + self.multiPageView.columnCount = 3; } [self.multiPageView setNeedsDisplay]; [self.label setNeedsDisplay]; diff --git a/Classes/Helpers/AKOMultiColumnTextViewDataSource.h b/Classes/Helpers/AKOMultiColumnTextViewDataSource.h new file mode 100644 index 0000000..bf51266 --- /dev/null +++ b/Classes/Helpers/AKOMultiColumnTextViewDataSource.h @@ -0,0 +1,20 @@ +// +// AKOMultiColumnTextViewDataSource.h +// CoreTextWrapper +// +// Created by Christian Menschel on 12.05.11. +// Copyright 2011 akosma software. All rights reserved. +// + +#import + +@class AKOMultiColumnTextView; + +@protocol AKOMultiColumnTextViewDataSource + +@optional + +- (UIView*)akoMultiColumnTextView:(AKOMultiColumnTextView*)textView viewForColumn:(NSInteger)column onPage:(NSInteger)page; + + +@end \ No newline at end of file diff --git a/Classes/Views/AKOMultiColumnTextView.h b/Classes/Views/AKOMultiColumnTextView.h index 491a89f..1e52ba6 100644 --- a/Classes/Views/AKOMultiColumnTextView.h +++ b/Classes/Views/AKOMultiColumnTextView.h @@ -8,6 +8,7 @@ #import #import +#import "AKOMultiColumnTextViewDataSource.h" @interface AKOMultiColumnTextView : UIView { @@ -22,6 +23,17 @@ CFIndex _startIndex; CFIndex _finalIndex; BOOL _moreTextAvailable; + + CTLineBreakMode _lineBreakMode; + CTTextAlignment _textAlignment; + CGFloat _firstLineHeadIndent; + CGFloat _spacing; + CGFloat _topSpacing; + CGFloat _lineSpacing; + CGPoint _columnInset; + + NSInteger _page; + id _dataSource; } @property (nonatomic) NSInteger columnCount; @@ -32,4 +44,16 @@ @property (nonatomic, readonly) CFIndex finalIndex; @property (nonatomic, readonly) BOOL moreTextAvailable; +@property (nonatomic, assign) CTLineBreakMode lineBreakMode; +@property (nonatomic, assign) CTTextAlignment textAlignment; +@property (nonatomic, assign) CGFloat firstLineHeadIndent; +@property (nonatomic, assign) CGFloat spacing; +@property (nonatomic, assign) CGFloat topSpacing; +@property (nonatomic, assign) CGFloat lineSpacing; +@property (nonatomic, assign) CGPoint columnInset; + +@property (nonatomic, assign) id dataSource; + @end + + diff --git a/Classes/Views/AKOMultiColumnTextView.m b/Classes/Views/AKOMultiColumnTextView.m index 8404b7c..56d88e5 100644 --- a/Classes/Views/AKOMultiColumnTextView.m +++ b/Classes/Views/AKOMultiColumnTextView.m @@ -1,4 +1,4 @@ -// + // AKOMultiColumnTextView.m // CoreTextWrapper // @@ -17,7 +17,7 @@ - (void)updateAttributedString; - (void)updateFrames; - (void)setup; - (void)createColumns; - +- (void)setPage:(NSInteger)page; @end @@ -32,6 +32,16 @@ @implementation AKOMultiColumnTextView @synthesize moreTextAvailable = _moreTextAvailable; @synthesize attributedString = _attributedString; +@synthesize lineBreakMode = _lineBreakMode; +@synthesize textAlignment = _textAlignment; +@synthesize firstLineHeadIndent = _firstLineHeadIndent; +@synthesize spacing = _spacing; +@synthesize topSpacing = _topSpacing; +@synthesize lineSpacing = _lineSpacing; +@synthesize columnInset = _columnInset; + +@synthesize dataSource = _dataSource; + #pragma mark - #pragma mark Init and dealloc @@ -47,11 +57,20 @@ - (void)setup _moreTextAvailable = NO; _columnPaths = NULL; _frames = NULL; + + + _lineBreakMode = kCTLineBreakByWordWrapping; + _textAlignment = kCTLeftTextAlignment; + _firstLineHeadIndent = 0.0; + _spacing = 5.0; + _topSpacing = 3.0; + _lineSpacing = 1.0; + _columnInset = CGPointMake(10.0, 10.0); } - (id)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) + if ((self = [super initWithFrame:frame])) { [self setup]; } @@ -60,7 +79,7 @@ - (id)initWithFrame:(CGRect)frame - (id)initWithCoder:(NSCoder *)aDecoder { - if (self = [super initWithCoder:aDecoder]) + if ((self = [super initWithCoder:aDecoder])) { [self setup]; } @@ -79,6 +98,7 @@ - (void)dealloc CFRelease(_frames); } + self.dataSource = nil; self.attributedString = nil; [_text release]; @@ -127,6 +147,19 @@ - (NSString *)text return _text; } +- (void)setDataSource:(id)dataSource +{ + if (![_dataSource isEqual:dataSource]) + { + _dataSource = dataSource; + if (dataSource != nil) + { + [self updateFrames]; + [self setNeedsDisplay]; + } + } +} + - (void)setText:(NSString *)newText { if (![_text isEqualToString:newText]) @@ -155,6 +188,8 @@ - (void)setColumnCount:(NSInteger)newColumnCount } } + + #pragma mark - #pragma mark Drawing methods @@ -183,6 +218,7 @@ - (void)drawRect:(CGRect)rect - (void)createColumns { + int column; CGRect* columnRects = (CGRect*)calloc(_columnCount, sizeof(*columnRects)); @@ -203,7 +239,7 @@ - (void)createColumns // Inset all columns by a few pixels of margin. for (column = 0; column < _columnCount; column++) { - columnRects[column] = CGRectInset(columnRects[column], 10.0, 10.0); + columnRects[column] = CGRectInset(columnRects[column], _columnInset.x, _columnInset.y); } // Create an array of layout paths, one for each column. @@ -215,11 +251,75 @@ - (void)createColumns for (column = 0; column < _columnCount; column++) { CGMutablePathRef path = CGPathCreateMutable(); - CGPathAddRect(path, NULL, columnRects[column]); + + + // ask the delegate here + UIView *columnView = nil; + if ([self.dataSource respondsToSelector:@selector(akoMultiColumnTextView:viewForColumn:onPage:)]) + { + columnView = [self.dataSource akoMultiColumnTextView:self viewForColumn:column onPage:_page]; + } + if (columnView != nil) + { + CGRect columnRect = columnRects[column]; + CGRect rectFromView = columnView.frame; + CGFloat cutLine = 0; + CGFloat drawYOffset = 0; + BOOL drawAbove = YES; + + + if (rectFromView.origin.y < 0) + { + cutLine = rectFromView.origin.y+rectFromView.size.height + _columnInset.y; + } + else if (rectFromView.origin.y+rectFromView.size.height >= columnRect.size.height) + { + cutLine = columnRect.size.height-(columnRect.size.height - rectFromView.origin.y) - _columnInset.y; + drawAbove = NO; + drawYOffset = columnRect.size.height-cutLine + _columnInset.y; + } + else + { + cutLine = rectFromView.size.height+_columnInset.y; + } + + CGRect rectToDraw1; + CGRect rectToDraw2; + CGRectDivide(columnRect, + &rectToDraw1, + &rectToDraw2, + cutLine, + CGRectMinYEdge); + + + + CGRect drawRect = rectToDraw1; + if (drawAbove == YES) + { + drawRect = rectToDraw2; + } + + CGPathAddRect(path, NULL, CGRectMake(drawRect.origin.x,drawYOffset +_columnInset.y, drawRect.size.width, drawRect.size.height-_columnInset.y)); + + // Not add the desired view on the column + columnView.frame = CGRectMake(drawRect.origin.x, + columnView.frame.origin.y + _columnInset.y, + columnView.frame.size.width, + columnView.frame.size.height); + + [self addSubview:columnView]; + } + else + { + CGPathAddRect(path, NULL, columnRects[column]); + } + CFArrayInsertValueAtIndex(_columnPaths, column, path); CFRelease(path); } free(columnRects); + + } - (void)updateAttributedString @@ -245,21 +345,16 @@ - (void)updateAttributedString range:range]; } + CFIndex theNumberOfSettings = 6; - CTLineBreakMode lineBreakMode = kCTLineBreakByWordWrapping; - CTTextAlignment textAlignment = kCTLeftTextAlignment; - CGFloat indent = 10.0; - CGFloat spacing = 15.0; - CGFloat topSpacing = 5.0; - CGFloat lineSpacing = 1.0; CTParagraphStyleSetting theSettings[6] = { - { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &textAlignment }, - { kCTParagraphStyleSpecifierLineBreakMode, sizeof(CTLineBreakMode), &lineBreakMode }, - { kCTParagraphStyleSpecifierFirstLineHeadIndent, sizeof(CGFloat), &indent }, - { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &spacing }, - { kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &topSpacing }, - { kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &lineSpacing } + { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &_textAlignment }, + { kCTParagraphStyleSpecifierLineBreakMode, sizeof(CTLineBreakMode), &_lineBreakMode }, + { kCTParagraphStyleSpecifierFirstLineHeadIndent, sizeof(CGFloat), &_firstLineHeadIndent }, + { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &_spacing }, + { kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &_topSpacing }, + { kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &_lineSpacing } }; CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, theNumberOfSettings); @@ -306,4 +401,9 @@ - (void)updateFrames } } +- (void)setPage:(NSInteger)page +{ + _page = page; +} + @end diff --git a/Classes/Views/AKOMultiPageTextView.h b/Classes/Views/AKOMultiPageTextView.h index 675e13e..76f3d55 100644 --- a/Classes/Views/AKOMultiPageTextView.h +++ b/Classes/Views/AKOMultiPageTextView.h @@ -7,6 +7,8 @@ // #import +#import "AKOMultiColumnTextViewDataSource.h" +#import @interface AKOMultiPageTextView : UIView { @@ -19,11 +21,36 @@ NSInteger _columnCount; UIPageControl *_pageControl; BOOL _pageControlUsed; + BOOL _scrollEnabled; + + CTLineBreakMode _lineBreakMode; + CTTextAlignment _textAlignment; + CGFloat _firstLineHeadIndent; + CGFloat _spacing; + CGFloat _topSpacing; + CGFloat _lineSpacing; + CGPoint _columnInset; + + id _dataSource; } @property (nonatomic, copy) NSString *text; @property (nonatomic, retain) UIFont *font; @property (nonatomic, retain) UIColor *color; @property (nonatomic) NSInteger columnCount; +@property (nonatomic, assign) BOOL scrollEnabled; +@property (nonatomic, assign, getter=getCurrentPageIndex) NSInteger currentPageIndex; +@property (nonatomic, assign, getter=getLastPageIndex) NSInteger lastPageIndex; + +@property (nonatomic, retain) UIPageControl *pageControl; +@property (nonatomic, assign) CTLineBreakMode lineBreakMode; +@property (nonatomic, assign) CTTextAlignment textAlignment; +@property (nonatomic, assign) CGFloat firstLineHeadIndent; +@property (nonatomic, assign) CGFloat spacing; +@property (nonatomic, assign) CGFloat topSpacing; +@property (nonatomic, assign) CGFloat lineSpacing; +@property (nonatomic, assign) CGPoint columnInset; + +@property (nonatomic, assign) id dataSource; @end diff --git a/Classes/Views/AKOMultiPageTextView.m b/Classes/Views/AKOMultiPageTextView.m index fe953eb..32f7fac 100644 --- a/Classes/Views/AKOMultiPageTextView.m +++ b/Classes/Views/AKOMultiPageTextView.m @@ -9,15 +9,20 @@ #import "AKOMultiPageTextView.h" #import "AKOMultiColumnTextView.h" + +@interface AKOMultiColumnTextView () +- (void)setPage:(NSInteger)page; +@end + @interface AKOMultiPageTextView () -@property (nonatomic, retain) UIPageControl *pageControl; + @property (nonatomic, retain) NSMutableArray *pages; @property (nonatomic, retain) UIScrollView *scrollView; @property (nonatomic) BOOL pageControlUsed; - (void)setup; - +- (void)changeColorForPageControl; @end @@ -27,14 +32,31 @@ @implementation AKOMultiPageTextView @synthesize scrollView = _scrollView; @synthesize pageControl = _pageControl; @synthesize pageControlUsed = _pageControlUsed; +@synthesize dataSource = _dataSource; +@synthesize scrollEnabled = _scrollEnabled; + +@synthesize lineBreakMode = _lineBreakMode; +@synthesize textAlignment = _textAlignment; +@synthesize firstLineHeadIndent = _firstLineHeadIndent; +@synthesize spacing = _spacing; +@synthesize topSpacing = _topSpacing; +@synthesize lineSpacing = _lineSpacing; +@synthesize columnInset = _columnInset; + + +@synthesize currentPageIndex; +@synthesize lastPageIndex; + @dynamic text; @dynamic font; @dynamic columnCount; @dynamic color; + + - (id)initWithCoder:(NSCoder *)aDecoder { - if (self = [super initWithCoder:aDecoder]) + if ((self = [super initWithCoder:aDecoder])) { [self setup]; } @@ -43,7 +65,7 @@ - (id)initWithCoder:(NSCoder *)aDecoder - (id)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) + if ((self = [super initWithFrame:frame])) { [self setup]; } @@ -52,22 +74,36 @@ - (id)initWithFrame:(CGRect)frame - (void)setup { + _lineBreakMode = kCTLineBreakByWordWrapping; + _textAlignment = kCTLeftTextAlignment; + _firstLineHeadIndent = 0.0; + _spacing = 5.0; + _topSpacing = 0.0; + _lineSpacing = 1.0; + _columnCount = 2; + _columnInset = CGPointMake(10.0, 10.0); + _scrollEnabled = YES; + self.pages = [NSMutableArray arrayWithCapacity:5]; CGRect scrollViewFrame = CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height - 20.0); self.scrollView = [[[UIScrollView alloc] initWithFrame:scrollViewFrame] autorelease]; - self.scrollView.scrollEnabled = YES; + self.scrollView.scrollEnabled = self.scrollEnabled; self.scrollView.bounces = YES; self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.scrollView.pagingEnabled = YES; self.scrollView.delegate = self; + CGRect pageControlFrame = CGRectMake(0.0, self.frame.size.height - 20.0, self.frame.size.width, 20.0); self.pageControl = [[[UIPageControl alloc] initWithFrame:pageControlFrame] autorelease]; self.pageControl.numberOfPages = 2; - self.pageControl.backgroundColor = [UIColor whiteColor]; + self.pageControl.backgroundColor = [UIColor clearColor]; self.pageControl.currentPage = 0; - self.pageControl.backgroundColor = [UIColor lightGrayColor]; + self.pageControl.hidden = NO; + + [self changeColorForPageControl]; + [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged]; @@ -81,7 +117,9 @@ - (void)dealloc self.pageControl = nil; self.scrollView = nil; self.pages = nil; - + self.dataSource = nil; + + [_text release]; _text = nil; [_font release]; @@ -95,8 +133,12 @@ - (void)dealloc #pragma mark - #pragma mark UIScrollViewDelegate methods + + - (void)scrollViewDidScroll:(UIScrollView *)sender { + [self changeColorForPageControl]; + if (self.pageControlUsed) { return; @@ -105,6 +147,7 @@ - (void)scrollViewDidScroll:(UIScrollView *)sender CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; self.pageControl.currentPage = page; + } - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView @@ -117,18 +160,39 @@ - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView self.pageControlUsed = NO; } +- (void)changeColorForPageControl +{ + for (NSUInteger subviewIndex = 0; subviewIndex < [self.pageControl.subviews count]; subviewIndex++) + { + UIImageView* subview = [self.pageControl.subviews objectAtIndex:subviewIndex]; + if (subviewIndex == self.pageControl.currentPage) + { + if ([subview respondsToSelector:@selector(setImage:)]) + { + [subview setImage:[UIImage imageNamed:@"page_dot_active.png"]]; + } + } + else + { + if ([subview respondsToSelector:@selector(setImage:)]) + { + [subview setImage:[UIImage imageNamed:@"page_dot_inactive.png"]]; + } + } + + } +} + #pragma mark - #pragma mark IBAction methods - (IBAction)changePage:(id)sender { int page = self.pageControl.currentPage; - CGRect frame = self.scrollView.frame; frame.origin.x = frame.size.width * page; frame.origin.y = 0; [self.scrollView scrollRectToVisible:frame animated:YES]; - self.pageControlUsed = YES; } @@ -194,6 +258,36 @@ - (void)setColor:(UIColor *)newColor } } + +- (void)setDataSource:(id)dataSource +{ + if (![_dataSource isEqual:dataSource]) + { + _dataSource = dataSource; + if (dataSource != nil) + { + [self setNeedsDisplay]; + } + } +} + + +- (void)setScrollEnabled:(BOOL)scrollEnabled +{ + _scrollEnabled = scrollEnabled; + self.scrollView.scrollEnabled = scrollEnabled; +} + +- (NSInteger)getCurrentPageIndex +{ + return self.pageControl.currentPage; +} + +- (NSInteger)getLastPageIndex +{ + return [_pages count]-1; +} + #pragma mark - #pragma mark Drawing code @@ -212,13 +306,26 @@ - (void)drawRect:(CGRect)rect { CGRect currentFrame = CGRectOffset(self.scrollView.frame, self.scrollView.frame.size.width * iteration, 0.0); AKOMultiColumnTextView *view = [[[AKOMultiColumnTextView alloc] initWithFrame:currentFrame] autorelease]; + [view setPage:iteration]; + view.columnCount = self.columnCount; view.startIndex = currentPosition; view.text = self.text; view.font = self.font; - view.columnCount = self.columnCount; view.color = self.color; - + view.backgroundColor = self.backgroundColor; + + // set the properties + view.lineBreakMode = _lineBreakMode; + view.textAlignment = _textAlignment; + view.firstLineHeadIndent = _firstLineHeadIndent; + view.spacing = _spacing; + view.topSpacing = _topSpacing; + view.lineSpacing = _lineSpacing; + view.columnInset = _columnInset; + + view.dataSource = self.dataSource; + [self.pages addObject:view]; [self.scrollView addSubview:view]; @@ -231,6 +338,9 @@ - (void)drawRect:(CGRect)rect while (moreTextAvailable); self.pageControl.numberOfPages = iteration; self.pageControl.currentPage = 0; + + [self changeColorForPageControl]; + } @end diff --git a/CoreTextWrapper.xcodeproj/project.pbxproj b/CoreTextWrapper.xcodeproj/project.pbxproj index 4691a1f..b10c46f 100755 --- a/CoreTextWrapper.xcodeproj/project.pbxproj +++ b/CoreTextWrapper.xcodeproj/project.pbxproj @@ -53,6 +53,7 @@ 3ACEB3A711E5D104005316CD /* PageController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PageController.xib; sourceTree = ""; }; 3ACEB3A911E5D112005316CD /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = ""; }; 8D1107310486CEB800E47090 /* CoreTextWrapper-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "CoreTextWrapper-Info.plist"; path = "../CoreTextWrapper-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + DAEE4FDB137C68EB0054D8F6 /* AKOMultiColumnTextViewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AKOMultiColumnTextViewDataSource.h; path = Classes/Helpers/AKOMultiColumnTextViewDataSource.h; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -196,6 +197,7 @@ 3ACEB39011E5CFD4005316CD /* AKOMultiColumnTextView.m */, 3ACEB39111E5CFD4005316CD /* AKOMultiPageTextView.h */, 3ACEB39211E5CFD4005316CD /* AKOMultiPageTextView.m */, + DAEE4FDB137C68EB0054D8F6 /* AKOMultiColumnTextViewDataSource.h */, ); path = Views; sourceTree = ""; diff --git a/Resources/NIBs/PageController.xib b/Resources/NIBs/PageController.xib index b09768b..8c064cd 100644 --- a/Resources/NIBs/PageController.xib +++ b/Resources/NIBs/PageController.xib @@ -2,17 +2,18 @@ 800 - 10F569 - 788 - 1038.29 + 10J3250 + 1306 + 1038.35 461.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 117 + 301 - + YES - + IBProxyObject + IBUIView YES @@ -23,9 +24,7 @@ YES - - YES - + YES @@ -47,6 +46,7 @@ 274 {{0, 96}, {1024, 652}} + 3 MQA @@ -58,6 +58,7 @@ 293 {{312, 20}, {402, 68}} + 3 MQA @@ -68,14 +69,16 @@ IBIPadFramework - {1024, 748} + {{0, 20}, {1024, 748}} + NO 2 + 3 3 IBIPadFramework @@ -182,17 +185,13 @@ YES - - YES - + YES - - YES - + 9 @@ -205,7 +204,7 @@ UIView IBProjectSource - Classes/Views/AKOCustomFontLabel.h + ./Classes/AKOCustomFontLabel.h @@ -213,7 +212,7 @@ UIView IBProjectSource - Classes/Views/AKOMultiPageTextView.h + ./Classes/AKOMultiPageTextView.h @@ -253,201 +252,7 @@ IBProjectSource - Classes/Controllers/PageController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h + ./Classes/PageController.h @@ -463,8 +268,7 @@ YES - ../../CoreTextWrapper.xcodeproj 3 - 117 + 301