adjust font size to make text fit within constrained size

# Conflicts:
#	AsyncDisplayKit/ASTextNode.mm
This commit is contained in:
rcancro
2016-02-12 11:11:06 -08:00
parent a4789f3524
commit a920e353c6
8 changed files with 284 additions and 129 deletions

View File

@@ -1,20 +1,46 @@
//
// ASTextKitFontSizeAdjuster.h
// AsyncDisplayKit
//
// Created by Luke on 1/20/16.
// Copyright © 2016 Facebook. All rights reserved.
//
/* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import <Foundation/Foundation.h>
#import "ASTextKitAttributes.h"
#import "ASTextKitContext.h"
@interface ASTextKitFontSizeAdjuster : NSObject
@property (nonatomic, assign) CGSize constrainedSize;
/**
* Creates a class that will return a scale factor the will make a string fit inside the constrained size.
*
* "Fitting" means that both the longest word in the string will fit without breaking in the constrained
* size's width AND that the entire string will try to fit within attribute's maximumLineCount. The amount
* that the string will scale is based upon the attribute's pointSizeScaleFactors. If the string cannot fit
* in the given width/number of lines, the smallest scale factor will be returned.
*
* @param context The text kit context
* @param constrainedSize The constrained size to render into
* @param textComponentAttributes The renderer's text attributes
*/
- (instancetype)initWithContext:(ASTextKitContext *)context
minimumScaleFactor:(CGFloat)minimumScaleFactor
constrainedSize:(CGSize)constrainedSize;
constrainedSize:(CGSize)constrainedSize
textKitAttributes:(const ASTextKitAttributes &)textComponentAttributes;
/**
* Returns the best fit scale factor for the text
*/
- (CGFloat)scaleFactor;
/**
* Takes all of the attributed string attributes dealing with size (font size, line spacing, kerning, etc) and
* scales them by the scaleFactor. I wouldn't be surprised if I missed some in here.
*/
+ (void)adjustFontSizeForAttributeString:(NSMutableAttributedString *)attrString withScaleFactor:(CGFloat)scaleFactor;
- (void) adjustFontSize;
@end