iOS專案開發實戰——UIView的子檢視和父檢視
iOS控制元件其實是有父子關係的,可以進行相互包含。我們通過程式碼來演示一下:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIView *view1 = [[UIView alloc] init];
view1.frame = CGRectMake(50, 50, 200, 200);
view1.backgroundColor = [UIColor yellowColor];
[self.view addSubview:view1];
//frame是實際檢視大小;
CGFloat x = view1.frame.origin.x;//獲取view的橫座標;
CGFloat y = view1.frame.origin.y;//獲取view的縱座標;
CGFloat width = view1.frame.size.width;//獲取view的寬度;
CGFloat height = view1.frame.size.height;//獲取view的高度;
//bounds是邊框大小;x,y永遠為零;
CGFloat xBounds = view1.bounds.origin.x;//獲取view的橫座標;
CGFloat yBounds = view1.bounds.origin.y;//獲取view的縱座標;
CGFloat widthBounds = view1.bounds.size.width;//獲取view的寬度;
CGFloat heightBounds = view1.bounds.size.height;//獲取view的高度;
//center 中心點;
CGFloat xCenter = view1.center.x;
CGFloat yCenter = view1.center.y;
NSLog(@"frame x=%.0f y=%.0f width=%.0f height=%.0f",x,y,width,height);
NSLog(@"bounds x=%.0f y=%.0f width=%.0f height=%.0f",xBounds,yBounds,widthBounds,heightBounds);
NSLog(@"center x=%0.f y=%0.f",xCenter,yCenter);
//座標是根據父檢視的位置來設定的,不會跨層;
UIView *view2 = [[UIView alloc] init];
view2.frame = CGRectMake(20, 20, 50, 50);
view2.backgroundColor = [UIColor redColor];
view2.tag = 101;//唯一標示值;
[view1 addSubview:view2];
UIView *view3 = [[UIView alloc] init];
view3.frame = CGRectMake(100, 100, 50, 50);
view3.backgroundColor = [UIColor redColor];
view3.tag = 102;
[view1 addSubview:view3];
//獲取view1的父檢視;
UIView *superView = view1.superview;
superView.backgroundColor = [UIColor grayColor];
//獲取view1的所有子檢視,返回的是陣列;
NSArray *subViewArray = view1.subviews;
for (UIView *subView in subViewArray) {
if (subView.tag == 101) {
subView.backgroundColor = [UIColor blackColor];
} else {
subView.backgroundColor = [UIColor whiteColor];
}
}
//能獲取指定tag識別符號的View;
UIView *v = [view1 viewWithTag:101];
v.backgroundColor = [UIColor purpleColor];
}
@end
實現效果如下:
.
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- iOS專案開發實戰——檢視動畫效果iOS動畫
- iOS專案開發實戰——實現檢視切換動畫iOS動畫
- iOS專案開發實戰——製作檢視的縮放動畫iOS動畫
- iOS專案開發實戰——製作檢視的旋轉動畫iOS動畫
- iOS專案開發實戰——設定檢視的透明度改變動畫iOS動畫
- 超出父檢視的子檢視如何響應點選事件事件
- iOS 11開發教程(十二)iOS11應用檢視始祖——UIViewiOSUIView
- iOS10 UI教程檢視和子檢視的可見性iOSUI
- Xamarin iOS開發實戰上冊----------2.2 新增和定製檢視iOS
- iOS專案開發實戰——UIView的層級關係iOSUIView
- iOS 控制元件檢視基類之 UIViewiOS控制元件UIView
- iOS10 UI教程子檢視和父檢視UI層次結構和Views繼承iOSUIView繼承
- iOS專案開發實戰——多個檢視的平移動畫與閉包函式的宣告與呼叫iOS動畫函式
- iOS專案開發實戰——製作檢視的平移動畫以及解決移動異常問題iOS動畫
- iOS開發系列--檢視切換iOS
- iOS10 UI教程檢視的繪製與檢視控制器和檢視iOSUI
- iOS 11開發教程(十六)iOS11應用檢視之刪除空白檢視iOS
- linux檢視埠是否已開啟和檢視檔案數Linux
- [Django REST framework - 檢視元件之檢視基類、檢視擴充套件類、檢視子類、檢視集]DjangoRESTFramework元件套件
- drf : 通用檢視類和(GenericAPIView)5個檢視擴充套件類,九個檢視子類,檢視集。APIView套件
- 在列印視窗,列印檢視View的子檢視結構圖View
- iOS開發之表檢視愛上CoreDataiOS
- 動態新增子檢視 UIView 的正確方法UIView
- 建議開發員少用帶錶連結的檢視(此檢視非物化檢視)
- iOS 11開發教程(十五)iOS11應用檢視的位置和大小iOS
- 普通檢視和物化檢視的區別
- iOS 檢視及匯出專案執行日誌iOS
- v$sesstat檢視和自開發工具
- [譯] 通過檢視控制器容器和子檢視控制器避免龐大的檢視控制器
- 關於開發檢視
- Xamarin XAML語言教程ContentView檢視作為自定義檢視的父類View
- Oracle普通檢視和物化檢視的區別Oracle
- iOS開發 如何通過檢視(view)獲取該檢視所在的控制器(viewController)iOSViewController
- 【MySQL】檢視&子查詢MySql
- iOS10 UI教程檢視的邊界與檢視的框架iOSUI框架
- django 的類檢視和函式檢視-雜談Django函式
- v$sql檢視和v$sqlarea檢視的構建SQL
- Express 實戰(七):檢視與模板:Pug 和 EJSExpressJS