Swiftgram/Source/ASButtonNode.h
appleguy 465abb1ded [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses). (#1077)
* [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses)

With permission of the Facebook Open Source team, we are simplifying the Texture
license so that clients can rely on the Apache 2 terms that most of Texture is
already covered by. This means that code originally forked from AsyncDisplayKit
will be re-licensed from "BSD 3-clause + PATENTS v2" to Apache 2 without a
PATENTS file.

After getting confirmation that the updates to these core files look good, we'll
propagate this new license header to all files (in this same PR) and get sign-off
from all parties before landing.

* [License] Update all Texture source files to be pure Apache 2.

* Changelog entry for Apache 2 license update.

* Revert "[License] Update all Texture source files to be pure Apache 2."

This reverts commit ffa0fbbba9717d871dd16c4b07539f2f8208fc2b.

* [License] Update all Texture source files to be pure Apache 2, maintaining copyrights.

* [License] Update CONTRIBUTING, README, Podspec & Dangerfile.
2018-08-28 07:39:18 -07:00

131 lines
4.1 KiB
Objective-C

//
// ASButtonNode.h
// Texture
//
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
//
#import <AsyncDisplayKit/ASControlNode.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class ASImageNode, ASTextNode;
/**
Image alignment defines where the image will be placed relative to the text.
*/
typedef NS_ENUM(NSInteger, ASButtonNodeImageAlignment) {
/** Places the image before the text. */
ASButtonNodeImageAlignmentBeginning,
/** Places the image after the text. */
ASButtonNodeImageAlignmentEnd
};
@interface ASButtonNode : ASControlNode
@property (readonly) ASTextNode * titleNode;
@property (readonly) ASImageNode * imageNode;
@property (readonly) ASImageNode * backgroundImageNode;
/**
Spacing between image and title. Defaults to 8.0.
*/
@property CGFloat contentSpacing;
/**
Whether button should be laid out vertically (image on top of text) or horizontally (image to the left of text).
ASButton node does not yet support RTL but it should be fairly easy to implement.
Defaults to YES.
*/
@property BOOL laysOutHorizontally;
/** Horizontally align content (text or image).
Defaults to ASHorizontalAlignmentMiddle.
*/
@property ASHorizontalAlignment contentHorizontalAlignment;
/** Vertically align content (text or image).
Defaults to ASVerticalAlignmentCenter.
*/
@property ASVerticalAlignment contentVerticalAlignment;
/**
* @discussion The insets used around the title and image node
*/
@property UIEdgeInsets contentEdgeInsets;
/**
* @discusstion Whether the image should be aligned at the beginning or at the end of node. Default is `ASButtonNodeImageAlignmentBeginning`.
*/
@property ASButtonNodeImageAlignment imageAlignment;
/**
* Returns the styled title associated with the specified state.
*
* @param state The control state that uses the styled title.
*
* @return The title for the specified state.
*/
- (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state AS_WARN_UNUSED_RESULT;
/**
* Sets the styled title to use for the specified state. This will reset styled title previously set with -setTitle:withFont:withColor:forState.
*
* @param title The styled text string to use for the title.
* @param state The control state that uses the specified title.
*/
- (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state;
#if TARGET_OS_IOS
/**
* Sets the title to use for the specified state. This will reset styled title previously set with -setAttributedTitle:forState.
*
* @param title The styled text string to use for the title.
* @param font The font to use for the title.
* @param color The color to use for the title.
* @param state The control state that uses the specified title.
*/
- (void)setTitle:(NSString *)title withFont:(nullable UIFont *)font withColor:(nullable UIColor *)color forState:(UIControlState)state;
#endif
/**
* Returns the image used for a button state.
*
* @param state The control state that uses the image.
*
* @return The image used for the specified state.
*/
- (nullable UIImage *)imageForState:(UIControlState)state AS_WARN_UNUSED_RESULT;
/**
* Sets the image to use for the specified state.
*
* @param image The image to use for the specified state.
* @param state The control state that uses the specified title.
*/
- (void)setImage:(nullable UIImage *)image forState:(UIControlState)state;
/**
* Sets the background image to use for the specified state.
*
* @param image The image to use for the specified state.
* @param state The control state that uses the specified title.
*/
- (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state;
/**
* Returns the background image used for a button state.
*
* @param state The control state that uses the image.
*
* @return The background image used for the specified state.
*/
- (nullable UIImage *)backgroundImageForState:(UIControlState)state AS_WARN_UNUSED_RESULT;
@end
NS_ASSUME_NONNULL_END