forked from objcio/issue-5-textkit
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added custom drawing to layout example.
- Loading branch information
Showing
8 changed files
with
85 additions
and
60 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
// | ||
// TKDOutliningLayoutManager.h | ||
// TextKitDemo | ||
// | ||
// Created by Max Seelemann on 29.09.13. | ||
// Copyright (c) 2013 Max Seelemann. All rights reserved. | ||
// | ||
|
||
#import <UIKit/UIKit.h> | ||
|
||
@interface TKDOutliningLayoutManager : NSLayoutManager | ||
|
||
@end |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
// | ||
// TKDOutliningLayoutManager.m | ||
// TextKitDemo | ||
// | ||
// Created by Max Seelemann on 29.09.13. | ||
// Copyright (c) 2013 Max Seelemann. All rights reserved. | ||
// | ||
|
||
#import "TKDOutliningLayoutManager.h" | ||
|
||
@implementation TKDOutliningLayoutManager | ||
|
||
- (void)drawUnderlineForGlyphRange:(NSRange)glyphRange underlineType:(NSUnderlineStyle)underlineVal baselineOffset:(CGFloat)baselineOffset lineFragmentRect:(CGRect)lineRect lineFragmentGlyphRange:(NSRange)lineGlyphRange containerOrigin:(CGPoint)containerOrigin | ||
{ | ||
// Left border (== position) of first underlined glyph | ||
CGFloat firstPosition = [self locationForGlyphAtIndex: glyphRange.location].x; | ||
|
||
// Right border (== position + width) of last underlined glyph | ||
CGFloat lastPosition; | ||
|
||
// When link is not the last text in line, just use the location of the next glyph | ||
if (NSMaxRange(glyphRange) < NSMaxRange(lineGlyphRange)) { | ||
lastPosition = [self locationForGlyphAtIndex: NSMaxRange(glyphRange)].x; | ||
} | ||
// Otherwise get the end of the actually used rect | ||
else { | ||
lastPosition = [self lineFragmentUsedRectForGlyphAtIndex:NSMaxRange(glyphRange)-1 effectiveRange:NULL].size.width; | ||
} | ||
|
||
// Inset line fragment to underlined area | ||
lineRect.origin.x += firstPosition; | ||
lineRect.size.width = lastPosition - firstPosition; | ||
|
||
// Offset line by container origin | ||
lineRect.origin.x += containerOrigin.x; | ||
lineRect.origin.y += containerOrigin.y; | ||
|
||
// Align line to pixel boundaries, passed rects may be | ||
lineRect = CGRectInset(CGRectIntegral(lineRect), .5, .5); | ||
|
||
[[UIColor greenColor] set]; | ||
[[UIBezierPath bezierPathWithRect: lineRect] stroke]; | ||
} | ||
|
||
@end |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
Lorem ipsum dolor sit amet, tomorrow consectetur adipiscing http://stackoverflow.com/questions/tagged/objective-c?sort=featured&pageSize=15 elit. Phasellus http://apple.com magna dolor, volutpat http://www.objc.io/issue-4/editorial.html a ipsum et, porttitor molestie justo. Vestibulum sed augue malesuada, congue magna sed, fringilla ligula. Sed aliquet porta vestibulum. Phasellus gravida elit ut ligula vulputate fringilla. Pellentesque sit amet dolor pulvinar, dictum eros non, suscipit purus. Aenean metus mi, sodales ut augue in, varius sagittis mi. Sed semper est vel placerat scelerisque. In hac habitasse platea dictumst. Mauris auctor accumsan sagittis. Etiam interdum ante in condimentum iaculis. Aliquam porta facilisis lorem in auctor. Nullam non tortor eget urna iaculis faucibus et in augue. Integer nec libero placerat magna rhoncus ultrices eu venenatis massa. Suspendisse ullamcorper molestie lorem eget consequat. | ||
Lorem ipsum dolor sit amet, tomorrow consectetur adipiscing http://stackoverflow.com/questions/tagged/objective-c?sort=featured&pageSize=15 elit. dictum eros non, suscipit purus. Aenean metus mi, sodales ut augue in, varius sagittis http://apple.com magnadolortligulavulputatefringilla. Pellentesque sit amet dolor pulvinar, dictum eros non, suscipit purus. Aenean metus mi, sodales ut augue in, varius sagittis mi. Sed semper est vel placerat scelerisque. In hac habitasse http://www.objc.io/issue-4/editorial.html ipsum eterant, porttitor molestie justo. Vestibulum sed augue malesuada, congue magna sed, fringilla ligula. Sed aliquet porta vestibulum. Phasellus gravida elit uatea dictumst. Mauris auctor accumsan sagittis. Etiam interdum ante in condimentum iaculis. Aliquam porta facilisis lorem in auctor. Nullam non tortor eget urna iaculis faucibus et in augue. Integer nec libero placerat magna rhoncus ultrices eu venenatis massa. Suspendisse ullamcorper molestie lorem eget consequat. | ||
|
||
Duis viverra, nibh vitae dapibus aliquet, dui sapien tristique enim, sit amet lacinia justo ligula sit amet arcu. Donec consequat, sapien nec varius placerat, lectus ante sollicitudin lorem, mattis dictum nisl diam id massa. Curabitur mattis turpis ac est cursus sagittis. Nunc in mattis mi, eu aliquet magna. Suspendisse arcu dolor, tincidunt nec eros in, dapibus auctor risus. Curabitur auctor sit amet eros sit amet imperdiet. Etiam et eros tempus, posuere justo ut, ultrices risus. Cras fringilla risus sapien, sit amet congue mauris fringilla quis. Mauris molestie tincidunt iaculis. Mauris nunc ante, faucibus et eros sed, imperdiet congue justo. Suspendisse euismod rhoncus sollicitudin. Maecenas non pretium nulla. |