日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS UIView的一些方法和属性(本博客侧重于视图布局部分的学习)

發布時間:2025/6/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS UIView的一些方法和属性(本博客侧重于视图布局部分的学习) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

好了,我接著上篇,開始我們的對UIView 實例方法的探索
UIView?實例方法 Instance Methods

初始化一個視圖
- (id)initWithFrame:(CGRect)aRect //用指定的frame 初始化一個視圖對象

結束視圖中的編輯狀態
- (BOOL)endEditing:(BOOL)force?
//這個在彈回鍵盤時特別有用

關于響應
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
//為視圖添加一個手勢識別器
- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
//移除一個手勢識別器
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
//開始一個手勢識別器
- (void)addMotionEffect:(UIMotionEffect *)effect
//開始向視圖中添加運動效果,這么說其實比較模糊,比如說警告框會隨著手機的傾斜而傾斜,
當然這需要代碼實現,只是我們現在可以檢測手機的運動事件來做出相應的響應
//從IOS7開始使用

管理視圖層次 Managing the View Hierarchy

- (void)addSubview:(UIView *)view //添加子視圖
- (void)removeFromSuperview //從父視圖中移除

- (void)bringSubviewToFront:(UIView *)view?
//移動指定的子視圖到最頂層
- (void)sendSubviewToBack:(UIView *)view
//移動制定的子視圖到后方,所有子視圖的下面

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
//在指定的位置插入子視圖,視圖的所有視圖其實組成了一個數組
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview
//將指定的子視圖移動到指定siblingSubview子視圖的前面
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview
//將指定的子視圖移動到指定siblingSubview子視圖的后面
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2
//交換兩子視圖的位置

- (BOOL)isDescendantOfView:(UIView *)view
//判斷接收對象是否是指定視圖的子視圖,或與指定視圖是同一視圖

配置自動調整大小狀態 Configuring the Resizing Behavior
- (void)sizeToFit //根據子視圖的大小位置,調整視圖,使其恰好圍繞子視圖,
也就是說自動適應子視圖的大小,只顯示子視圖
- (CGSize)sizeThatFits:(CGSize)size
//讓視圖計算最適合子視圖的大小,即能把全部子視圖顯示出來所需要的最小的size

鋪設子視圖 Laying out Subviews

- (void)layoutSubviews //勾畫子視圖
- (void)layoutIfNeeded //立即勾畫子視圖
- (void)setNeedsLayout?
//使當前接收對象的布局作廢,并在下一更新周期觸發一個新的布局

選擇加入基于約束的布局 Opting in to Constraint-Based Layout

- (void)setTranslatesAutoresizingMaskIntoConstraints:(BOOL)flag
//設置視圖自動調整尺寸的掩碼是否轉化為基于約束布局的約束
- (BOOL)translatesAutoresizingMaskIntoConstraints
//判斷視圖是否將自動調整尺寸的掩碼是否轉化為基于約束布局的約束

管理約束 Managing Constraints

- (NSArray *)constraints //返回由視圖創建的約束

- (void)addConstraint:(NSLayoutConstraint *)constraint
//為視圖布局或者子視圖添加一個約束,constraint約束只能在當前視圖范圍內,包括子視圖
- (void)addConstraints:(NSArray *)constraints
//添加一組約束

- (void)removeConstraint:(NSLayoutConstraint *)constraint
//移除視圖上指定的約束
- (void)removeConstraints:(NSArray *)constraints
//移除指定的一組約束

在基于約束布局的測量 Measuring in Constraint-Based Layout

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize
//返回滿足持有約束的視圖的size

- (CGSize)intrinsicContentSize
//返回接收對象的原本大小

- (void)invalidateIntrinsicContentSize
//廢除視圖原本內容的size

- (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis
//設置當視圖要變小時,視圖的壓縮改變方式,是水平縮小還是垂直縮小,并返回一個優先權
- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis
//設置優先權

- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis
//與上邊相反是視圖的放大改變方式
- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis
//參照上面的方法

校準視圖 Aligning Views with Constraint-Based Layout

- (CGRect)alignmentRectForFrame:(CGRect)frame
//返回給定框架的視圖的對齊矩陣
- (CGRect)frameForAlignmentRect:(CGRect)alignmentRect
//返回給定對齊矩形的視圖的frame
- (UIEdgeInsets)alignmentRectInsets
//返回從視圖的frame上定義的對齊矩陣的邊框?
- (UIView *)viewForBaselineLayout
//返回滿足基線約束條件的視圖

觸發基于約束的布局 Triggering Constraint-Based Layout

- (BOOL)needsUpdateConstraints //視圖的約束是否需要更新
- (void)setNeedsUpdateConstraints //設置視圖的約束需要更新

- (void)updateConstraints //為視圖更新約束
- (void)updateConstraintsIfNeeded //更新視圖和其子視圖的約束

調試基于約束的布局 Debugging Constraint-Based Layout

- (NSArray *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis
//返回影響一個給定軸視圖布局的約束

- (BOOL)hasAmbiguousLayout //視圖的位置是否不完全指定

- (void)exerciseAmbiguityInLayout
//在不同的有效值之間用一個模糊的布局隨機改變視圖的frame

繪畫和更新視圖 Drawing and Updating the View

- (void)drawRect:(CGRect)rect //在指定的區域繪畫視圖

- (void)setNeedsDisplay //標記整個視圖的邊界矩形需要重繪
- (void)setNeedsDisplayInRect:(CGRect)invalidRect
//標記在指定區域內的視圖的邊界需要重繪

格式化打印視圖內容

- (UIViewPrintFormatter *)viewPrintFormatter //返回視圖的打印格式化

- (void)drawRect:(CGRect)area forViewPrintFormatter:(UIViewPrintFormatter *)formatter
//指定區域和打印格式繪畫視圖內容

保存和恢復狀態 Preserving and Restoring State

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
//編碼視圖的狀態信息
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder
//解碼一個視圖狀態信息

標記視圖?
- (UIView *)viewWithTag:(NSInteger)tag

轉換視圖間坐標 Converting Between View Coordinate Systems

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
//轉換一個點從接受對象的坐標系到指定視圖
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
//與上面相反,指定視圖坐標中的一個點轉換為接收對象

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view
//參照上面兩個方法

視圖中的點擊測試

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
//在指定點上點擊測試指定事件
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
//測試指定的點是否包含在接收對象中

注意與視圖相關聯的改變 Observing View-Related Changes

- (void)didAddSubview:(UIView *)subview
//通知視圖指定子視圖已經添加
- (void)willRemoveSubview:(UIView *)subview
//通知視圖將要移除指定的子視圖

- (void)willMoveToSuperview:(UIView *)newSuperview
//通知視圖將要移動到一個新的父視圖中
- (void)didMoveToSuperview
//通知視圖已經移動到一個新的父視圖中

- (void)willMoveToWindow:(UIWindow *)newWindow
//通知視圖將要移動到一個新的window中
- (void)didMoveToWindow
//通知視圖已經移動到一個新的window中

轉載于:https://www.cnblogs.com/wfwenchao/articles/3831696.html

總結

以上是生活随笔為你收集整理的iOS UIView的一些方法和属性(本博客侧重于视图布局部分的学习)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。