iOS-获取UIView的全部层级结构
ios 获取 结构 全部 层级 uiview
2023-09-14 09:10:08 时间
在iOS中获取UIView的全部层级结构
应用场景
在实际 iOS 开发中,非常多时候都须要知道某个 UI 控件中包括哪些子控件,而且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便我们完毕复杂的 UI 布局,以下的代码就能非常方便的获取某个 UI 控件的全部的层级结构。我们能够用它计算,然后把结果写入到本地磁盘。导出成XML文件,这样我们就能够非常直观的看出它内部的细节。
/**
* 返回传入veiw的全部层级结构
*
* @param view 须要获取层级结构的view
*
* @return 字符串
*/
- (NSString *)digView:(UIView *)view
{
if ([view isKindOfClass:[UITableViewCell class]]) return @"";
// 1.初始化
NSMutableString *xml = [NSMutableString string];
// 2.标签开头
[xml appendFormat:@"<%@ frame=\"%@\"", view.class, NSStringFromCGRect(view.frame)];
if (!CGPointEqualToPoint(view.bounds.origin, CGPointZero)) {
[xml appendFormat:@" bounds=\"%@\"", NSStringFromCGRect(view.bounds)];
}
if ([view isKindOfClass:[UIScrollView class]]) {
UIScrollView *scroll = (UIScrollView *)view;
if (!UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, scroll.contentInset)) {
[xml appendFormat:@" contentInset=\"%@\"", NSStringFromUIEdgeInsets(scroll.contentInset)];
}
}
// 3.推断是否要结束
if (view.subviews.count == 0) {
[xml appendString:@" />"];
return xml;
} else {
[xml appendString:@">"];
}
// 4.遍历全部的子控件
for (UIView *child in view.subviews) {
NSString *childXml = [self digView:child];
[xml appendString:childXml];
}
// 5.标签结尾
[xml appendFormat:@"</%@>", view.class];
return xml;
}
相关文章
- iOS小技能:封装定位SDK,统一数据模型和错误处理。
- iOS小技能:图片压缩、图像格式的判断、获取gif图片循环次数和时长
- 什么是p12证书?ios p12证书怎么获取?
- 关于最新版ios淘宝没法抓到包的问题
- use SceneKit to display 3d objects in an iOS project
- PHP获取客户端机型,可区分windows、ios、android
- ios打包证书在线生成,在线制作方法
- iOS开发证书申请教程(udid真机调试测试)
- IOS – OpenGL ES 黑白马赛克效果 GPUImageMosaicFilter
- Hbuilder用自有证书打包 ios App上架AppStore流程
- iOS代码编写利器AppCode 2023.1
- 《简化iOS APP上架流程,App Uploader助你搞定!》
- iOS开发实践之GET和POST请求详解手机开发
- iOS字符串NSString常用方法详解手机开发
- iOS获取汉字首字母详解手机开发
- iOS获取文件路径详解手机开发
- iOS获取App各种文件的路径方法汇集详解手机开发
- ios 获取屏幕的属性和宽度详解手机开发
- 根据Date获取x分钟前/x小时前/昨天/x天前/x个月前/x年前的iOS代码详解手机开发
- iOS调用相册和摄像头详解手机开发
- ios 获取网络类型详解手机开发
- iOS获取视图控制器实例的方法详解手机开发
- iOS开发—-地图与导航–定位和位置信息获取详解手机开发
- iOS开发-捕获程序崩溃日志详解手机开发
- iOS开发——高级技术&通讯录功能的实现详解手机开发
- 在iOS上搭建MySQL数据库连接(ios连接mysql数据库)
- Linux与iOS之间的技术对比(linux和ios)
- appLinux开发探索之路:从iOS APP开始(linux开发ios)
- 操作系统比较:iOS 与 Linux 操作系统(ios与linux)
- 苹果侵入Facebook领地:iOS 15新社交功能令扎克伯格抓狂
- 苹果 Xcode 开发工具显示,将有 iOS 14.8 版本
- 移动端iOS技术实现Oracle数据库连接(ios联接oracle)
- IOS系统有支持Oracle吗(ios支持oracle吗)
- 谁说 iOS 就不适用Oracle(ios oracle软件)
- 探讨Android与iOS,我们将何去何从?