UIView
//繼承自UIResponder,擁有touches方法
@interface?UIView?:?UIResponder
/**
*??通過一個frame來初始化一個UI控件
*/
-?(id)initWithFrame:(CGRect)frame;
//?YES:能夠跟用戶進行交互
@property(nonatomic,getter=isUserInteractionEnabled)?BOOL?userInteractionEnabled;??//?default?is?YES
//?控件的一個標記(父控件可以通過tag找到對應的子控件)
@property(nonatomic)?????????????????????????????????NSInteger?tag;????????????????//?default?is?0
//?圖層(可以用來設置圓角效果\陰影效果)
@property(nonatomic,readonly,retain)?????????????????CALayer??*layer;
@end
@interface?UIView(UIViewGeometry)
//?位置和尺寸(以父控件的左上角為坐標原點(0,?0))
@property(nonatomic)?CGRect????????????frame;
//?位置和尺寸(以自己的左上角為坐標原點(0,?0))
@property(nonatomic)?CGRect????????????bounds;
//?中點(以父控件的左上角為坐標原點(0,?0))
@property(nonatomic)?CGPoint???????????center;
//?形變屬性(平移\縮放\旋轉)
@property(nonatomic)?CGAffineTransform?transform;???//?default?is?CGAffineTransformIdentity
//?YES:支持多點觸摸
@property(nonatomic,getter=isMultipleTouchEnabled)?BOOL?multipleTouchEnabled;???//?default?is?NO
@end
@interface?UIView(UIViewHierarchy)
//?父控件
@property(nonatomic,readonly)?UIView???????*superview;
//?子控件(新添加的控件默認都在subviews數組的后面,?新添加的控件默認都顯示在最上面\最頂部)
@property(nonatomic,readonly,copy)?NSArray?*subviews;
//?獲得當前控件所在的window
@property(nonatomic,readonly)?UIWindow?????*window;
//?從父控件中移除一個控件
-?(void)removeFromSuperview;
//?添加一個子控件(可以將子控件插入到subviews數組中index這個位置)
-?(void)insertSubview:(UIView?*)view?atIndex:(NSInteger)index;
//?交換subviews數組中所存放子控件的位置
-?(void)exchangeSubviewAtIndex:(NSInteger)index1?withSubviewAtIndex:(NSInteger)index2;
//?添加一個子控件(新添加的控件默認都在subviews數組的后面,?新添加的控件默認都顯示在最上面\最頂部)
-?(void)addSubview:(UIView?*)view;
//?添加一個子控件view(被擋在siblingSubview的下面)
-?(void)insertSubview:(UIView?*)view?belowSubview:(UIView?*)siblingSubview;
//?添加一個子控件view(蓋在siblingSubview的上面)
-?(void)insertSubview:(UIView?*)view?aboveSubview:(UIView?*)siblingSubview;
//?將某個子控件拉到最上面(最頂部)來顯示
-?(void)bringSubviewToFront:(UIView?*)view;
//?將某個子控件拉到最下面(最底部)來顯示
-?(void)sendSubviewToBack:(UIView?*)view;
/**系統(tǒng)自動調用(留給子類去實現)**/
-?(void)didAddSubview:(UIView?*)subview;
-?(void)willRemoveSubview:(UIView?*)subview;
-?(void)willMoveToSuperview:(UIView?*)newSuperview;
-?(void)didMoveToSuperview;
-?(void)willMoveToWindow:(UIWindow?*)newWindow;
-?(void)didMoveToWindow;
/**系統(tǒng)自動調用**/
//?是不是view的子控件或者子控件的子控件(是否為view的后代)
-?(BOOL)isDescendantOfView:(UIView?*)view;??//?returns?YES?for?self.
//?通過tag獲得對應的子控件(也可以或者子控件的子控件)
-?(UIView?*)viewWithTag:(NSInteger)tag;?????//?recursive?search.?includes?self
/**系統(tǒng)自動調用(留給子類去實現)**/
//?控件的frame發(fā)生改變的時候就會調用,一般在這里重寫布局子控件的位置和尺寸
//?重寫了這個寫方法后,一定調用[super?layoutSubviews];
-?(void)layoutSubviews;
@end
@interface?UIView(UIViewRendering)
//?YES?:?超出控件邊框范圍的內容都剪掉
@property(nonatomic)?????????????????BOOL??????????????clipsToBounds;
//?背景色
@property(nonatomic,copy)????????????UIColor??????????*backgroundColor;?//?default?is?nil
//?透明度(0.0~1.0)
@property(nonatomic)?????????????????CGFloat???????????alpha;??????????????????????//?default?is?1.0
//?YES:不透明??NO:透明
@property(nonatomic,getter=isOpaque)?BOOL??????????????opaque;?????????????????????//?default?is?YES
//?YES?:?隱藏??NO?:?顯示
@property(nonatomic,getter=isHidden)?BOOL??????????????hidden;
//?內容模式
@property(nonatomic)?????????????????UIViewContentMode?contentMode;????????????????//?default?is?UIViewContentModeScaleToFill
@end
//設置屬性改變時的動畫
@interface?UIView(UIViewAnimationWithBlocks)
+?(void)animateWithDuration:(NSTimeInterval)duration?delay:(NSTimeInterval)delay?options:(UIViewAnimationOptions)options?animations:(void?(^)(void))animations?completion:(void?(^)(BOOL?finished))completion;
+?(void)animateWithDuration:(NSTimeInterval)duration?animations:(void?(^)(void))animations?completion:(void?(^)(BOOL?finished))completion;
+?(void)animateWithDuration:(NSTimeInterval)duration?animations:(void?(^)(void))animations;
+?(void)animateWithDuration:(NSTimeInterval)duration?delay:(NSTimeInterval)delay?usingSpringWithDamping:(CGFloat)dampingRatio?initialSpringVelocity:(CGFloat)velocity?options:(UIViewAnimationOptions)options?animations:(void?(^)(void))animations?completion:(void?(^)(BOOL?finished))completion;
@end。