| Index: ios/chrome/browser/ui/util/label_observer.h
|
| diff --git a/ios/chrome/browser/ui/util/label_observer.h b/ios/chrome/browser/ui/util/label_observer.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f102efbd012807f71646bde9815bf505ea59b726
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/util/label_observer.h
|
| @@ -0,0 +1,47 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_UTIL_LABEL_OBSERVER_H_
|
| +#define IOS_CHROME_BROWSER_UI_UTIL_LABEL_OBSERVER_H_
|
| +
|
| +#import <UIKit/UIKit.h>
|
| +
|
| +// Class that observes changes to UILabel properties via KVO. This allows
|
| +// various classes that manage a UILabel's style via NSAttributedStrings to
|
| +// reapply their styling in response to property changes that would invalidate
|
| +// the attributed text. This class also synchronizes notifications of style
|
| +// invalidation so that property changes that occur as the result of a
|
| +// LabelObserverAction do not trigger other actions.
|
| +@interface LabelObserver : NSObject
|
| +
|
| +// Returns the LabelObserver for |label|, laziliy instantiating one if
|
| +// necessary. LabelObservers are associated with the label, and will be
|
| +// deallocated upon |label|'s deallocation.
|
| ++ (instancetype)observerForLabel:(UILabel*)label;
|
| +
|
| +// LabelObservers should be created via |+observerForLabel:|.
|
| +- (instancetype)init NS_UNAVAILABLE;
|
| +
|
| +// Block type that takes a label. Blocks registered for a label will be called
|
| +// when property values are updated.
|
| +typedef void (^LabelObserverAction)(UILabel* label);
|
| +
|
| +// Registers |action| to be called when stylistic properties on the observed
|
| +// label are changed. Style changes include changes to the label's font,
|
| +// textColor, textAlignment, lineBreakMode, shadowColor, or shadowOffset.
|
| +- (void)addStyleChangedAction:(LabelObserverAction)action;
|
| +
|
| +// Registers |action| to be called when the observed label's layout has changed.
|
| +// Layout changes include changes to the label's bounds, frame, or superview, as
|
| +// well as changes to its center, which doesn't affect the label's layout
|
| +// internally but does affect its position in its superview.
|
| +- (void)addLayoutChangedAction:(LabelObserverAction)action;
|
| +
|
| +// Registers |action| to be called when the observed label's text has changed.
|
| +// Text changes include changes to the label's text or attributedText.
|
| +- (void)addTextChangedAction:(LabelObserverAction)action;
|
| +
|
| +@end
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_UTIL_LABEL_OBSERVER_H_
|
|
|