¿Qué propiedades puedo establecer a través de un proxy UIAppearance?
78
¿Qué propiedades puedo establecer a través de un proxy UIAppearance? La documentación UIKit de Apple no los enumera. ¿Existe una lista de estas propiedades?
Mattt Thompson proporcionó un excelente artículo sobre ese tema en NSHipster: nshipster.com/uiappearance
Pierre
Respuestas:
212
Las propiedades que se pueden configurar a través de UIAppearance se etiquetan con UI_APPEARANCE_SELECTORen el archivo de encabezado correspondiente.
Para generar una lista de propiedades etiquetadas con UI_APPEARANCE_SELECTOR, puede usar los siguientes comandos de Unix en una terminal:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/UIKit.framework/Headersgrep-HUI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'
Aquí hay una lista que compilé usando los comandos anteriores. Esto es para el SDK 5.0. Los métodos de obtención correspondientes se han omitido por brevedad.
(3 de julio de 2012) : esta lista no ha cambiado hasta la versión más reciente de XCode (4.3.3).
(12 de marzo de 2013) : Lista actualizada para SDK 6.1. Las propiedades que se aplican a iOS 6.0 (o superior) se enumeran debajo de la [iOS 6.0]etiqueta.
(24 de octubre de 2013) : Lista actualizada para SDK 7.0. Las propiedades que se aplican a iOS 7.0 (o superior) se enumeran debajo de la [iOS 7.0]etiqueta.
Me sorprende que UIButtonno tenga ninguna UI_APPEARANCE_SELECTORpropiedad, pero se ajuste al UIAppearanceprotocolo. ¿Es esto un descuido de Apple?
Emile Cormier
3
He buscado esa lista sin encontrarla. La macro UI_APPEARANCE_SELECTOR tampoco parece ser la historia completa, ya que UIView.h no la usa (5.0, al menos) y, sin embargo, el siguiente código funciona: [[apariencia UIView] setBackgroundColor: [UIColor redColor]];
Phillip Mills
2
Con App Store Xcode e iOS 5.1, la ruta del encabezado ahora es: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/UIKit. framework / Headers
Erik
2
Úselo xcode-select --print-pathpara obtener la ruta al directorio de desarrolladores.
Pascal
para XCode 4.5 es: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/
Respuestas:
Las propiedades que se pueden configurar a través de UIAppearance se etiquetan con
UI_APPEARANCE_SELECTORen el archivo de encabezado correspondiente.Para generar una lista de propiedades etiquetadas con
UI_APPEARANCE_SELECTOR, puede usar los siguientes comandos de Unix en una terminal:cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/UIKit.framework/Headers grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'Aquí hay una lista que compilé usando los comandos anteriores. Esto es para el SDK 5.0. Los métodos de obtención correspondientes se han omitido por brevedad.
UIActivityIndicatorView
@property (readwrite, nonatomic, retain) UIColor *colorUIBarButtonItem
@property(nonatomic,retain) UIColor *tintColor - (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics - (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics - (void)setTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics - (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics - (void)setBackButtonTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics - (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics [iOS 6.0] - (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state style:(UIBarButtonItemStyle)style barMetrics:(UIBarMetrics)barMetrics [iOS 6.0]UIBarItem
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)stateUINavigationBar
@property(nonatomic,retain) UIColor *tintColor @property(nonatomic,copy) NSDictionary *titleTextAttributes - (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics - (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics [iOS 6.0] @property(nonatomic,retain) UIImage *shadowImage [iOS 7.0] @property(nonatomic,retain) UIColor *barTintColor - (void)setBackgroundImage:(UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics - (UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics @property(nonatomic,retain) UIImage *backIndicatorImage @property(nonatomic,retain) UIImage *backIndicatorTransitionMaskImageUIPageControl
[iOS 6.0] @property(nonatomic,retain) UIColor *pageIndicatorTintColor @property(nonatomic,retain) UIColor *currentPageIndicatorTintColorUIProgressView
@property(nonatomic, retain) UIColor* progressTintColor @property(nonatomic, retain) UIColor* trackTintColor @property(nonatomic, retain) UIImage* progressImage @property(nonatomic, retain) UIImage* trackImageUIRefreshControl
[iOS 6.0] @property (nonatomic, retain) UIColor *tintColor @property (nonatomic, retain) NSAttributedString *attributedTitleUISearchBar
@property(nonatomic,retain) UIImage *backgroundImage @property(nonatomic,retain) UIImage *scopeBarBackgroundImage @property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment @property(nonatomic) UIOffset searchTextPositionAdjustment - (void)setSearchFieldBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state - (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state - (void)setScopeBarButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state - (void)setScopeBarButtonDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState - (void)setScopeBarButtonTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state - (void)setPositionAdjustment:(UIOffset)adjustment forSearchBarIcon:(UISearchBarIcon)icon [iOS 7.0] @property(nonatomic,retain) UIColor *barTintColor - (void)setBackgroundImage:(UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics - (UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetricsUISegmentedControl
@property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR; - (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics - (void)setDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics - (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state - (void)setContentPositionAdjustment:(UIOffset)adjustment forSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetricsUISlider
@property(nonatomic,retain) UIColor *minimumTrackTintColor @property(nonatomic,retain) UIColor *maximumTrackTintColor @property(nonatomic,retain) UIColor *thumbTintColorUIStepper
[iOS 6.0] @property(nonatomic,retain) UIColor *tintColor - (void)setBackgroundImage:(UIImage*)image forState:(UIControlState)state - (void)setDividerImage:(UIImage*)image forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState - (void)setIncrementImage:(UIImage *)image forState:(UIControlState)state - (void)setDecrementImage:(UIImage *)image forState:(UIControlState)stateUISwitch
@property(nonatomic, retain) UIColor* onTintColor [iOS 6.0] @property(nonatomic, retain) UIColor *tintColor @property(nonatomic, retain) UIColor *thumbTintColor @property(nonatomic, retain) UIImage *onImage @property(nonatomic, retain) UIImage *offImageUITabBar
@property(nonatomic,retain) UIColor *tintColor @property(nonatomic,retain) UIColor *selectedImageTintColor @property(nonatomic,retain) UIImage *backgroundImage @property(nonatomic,retain) UIImage *selectionIndicatorImage [iOS 6.0] @property(nonatomic,retain) UIImage *shadowImage [iOS 7.0] @property(nonatomic,retain) UIColor *barTintColor @property(nonatomic) UITabBarItemPositioning itemPositioning @property(nonatomic) CGFloat itemWidth @property(nonatomic) CGFloat itemSpacing @property(nonatomic) UIBarStyle barStyleUITabBarItem
- (void)setTitlePositionAdjustment:(UIOffset)adjustmentUITableView
[iOS 6.0] @property(nonatomic, retain) UIColor *sectionIndexColor @property(nonatomic, retain) UIColor *sectionIndexTrackingBackgroundColor [iOS 7.0] @property (nonatomic) UIEdgeInsets separatorInset @property(nonatomic, retain) UIColor *sectionIndexBackgroundColorUITableViewCell
[iOS 7.0] @property (nonatomic) UIEdgeInsets separatorInsetUITableViewHeaderFooterView
[iOS 6.0] @property(nonatomic, retain) UIColor *tintColorUIToolbar
@property(nonatomic,retain) UIColor *tintColor; - (void)setBackgroundImage:(UIImage *)backgroundImage forToolbarPosition:(UIToolbarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics [iOS 6.0] - (void)setShadowImage:(UIImage *)shadowImage forToolbarPosition:(UIToolbarPosition)topOrBottom [iOS 7.0] @property(nonatomic,retain) UIColor *barTintColor(3 de julio de 2012) : esta lista no ha cambiado hasta la versión más reciente de XCode (4.3.3).
(12 de marzo de 2013) : Lista actualizada para SDK 6.1. Las propiedades que se aplican a iOS 6.0 (o superior) se enumeran debajo de la
[iOS 6.0]etiqueta.(24 de octubre de 2013) : Lista actualizada para SDK 7.0. Las propiedades que se aplican a iOS 7.0 (o superior) se enumeran debajo de la
[iOS 7.0]etiqueta.fuente
UIButtonno tenga ningunaUI_APPEARANCE_SELECTORpropiedad, pero se ajuste alUIAppearanceprotocolo. ¿Es esto un descuido de Apple?xcode-select --print-pathpara obtener la ruta al directorio de desarrolladores.