我有一个父UIView带有几个子视图. 子视图是兄弟姐妹 - 儿童视图不是彼此的子视图. (在他们的监督中每个人都处于相同的继承级别) 例如: UIView *containerView = [[UIView alloc] initWithFrame:frame]; CustomUIView *childView = [[UIView alloc] initWithFrame:anotherFrame]; CustomUIView *yetAnotherChildView = [[UIView alloc] initWithFrame:anotherFrame]; [containerView addSubview:childView]; [containerView addSubview:yetAnotherChildView]; [containerView bringSubviewToFront:childView]; 我希望yetAnotherChild
以下是关于 uiview-hierarchy 的编程技术问答
当我尝试在导航控制器上介绍一个ActivityController时,我正在遵循警告, Attempt to present on whose view is not in the window hierarchy! 我试图通过以下代码来呈现视图控制器 UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities]; activityController.excludedActivityTypes = excludeActivities; UIVi
我的问题:我有一个基本上占用整个应用程序框架的Supperiew EditView,一个子视图MenuView仅占据底部〜20%,然后MenuView>包含其自己的子视图ButtonView,实际上位于MenuView>>的边界之外(类似:ButtonView.frame.origin.y = -100). (注意:EditView还有其他不是MenuView视图层次结构的子视图,但可能会影响答案.) 您可能已经知道了这个问题:当ButtonView在MenuView>的范围内(或者更具体地说,当我的触摸在MenuView的范围内)时,ButtonView会响应触摸事件.当我的触摸不在MenuView的范围之外(但仍在ButtonView的范围内)时,ButtonView 都不会收到触摸事件. 示例: (e)是EditView,所有视图的父母 (m)是MenuView,editview的子视图 (b)是ButtonView,Menuview的子视图 图
我需要知道_UILayoutGuide,就像它是什么,它的作用以及为什么它在UIView的层次结构中以subview的形式存在,几乎总是frame = (0,0,0,0). . 解决方案 UILayoutGuide通常将其引用为-toplayoutguide和-bottomlayoutguide,这些不是真正的约束,但是它们是视图元素符合称为UILayoutSupport的协议. 您可以找到有关该协议的更多信息在这里.值通常为0,但是您应该在问他们的 size . 其他解决方案 这是一个私人Apple类,用于启用自动布局时,用于topLayoutGuide和bottomLayoutGuide.如果您的导航栏是不透明的,则其中一个"视图"将在[0,0]中.如果您的导航栏是半透明的,则相同的view通常在肖像中的[0,64]中(状态栏的20pt + 44pt for Navigation Bar).如果有一个,则有一个类似的工具栏. 这样做的原因是这样您可以定义与U
有没有一种方法可以在Swift中使用[self.view recursiveScription]?我正在尝试使用此方法,但我会收到以下错误: 'UIView' does not have a member named 'recursiveDescription' 有什么建议? 解决方案 为了访问Swift的私有/无证件Objective-C API(例如UIView上的-recursiveDescription方法),您可以执行以下操作: 在类上创建一个新的Objective-C类别,私有方法在(例如UIView)中定义. hit 是如果Xcode询问您要配置桥接标头. (如果您的项目中已经有一个桥接标头,则将跳过此步骤). 可以删除类别的实现文件(.m). 在类别标题中声明私有方法: // UIView+Debugging.h @interface UIView (Debugging) - (id)recursiveDescription; @
根据有关contentMode属性的官方文档的说法: The content mode specifies how the cached bitmap of the view’s layer is adjusted when the view’s bounds change 该定义中的内容定义了什么?是一个子视图还是当我们为视图定义背景颜色时. 我的第一个猜测是,它至少应该适用于视图中的子视图,但是例如,以下代码段在使用UIViewContentModeCenter标签时不会给我预期的结果: UIView* redView = [[UIView alloc] initWithFrame:CGRectMake(80, 80, 150, 200)]; redView.contentMode = UIViewContentModeCenter; redView.backgroundColor = [UIColor redColor]; UIView* green
我正在构建一个简单的纸牌游戏,将卡片放在中央堆上,我想在数字太大时开始删除底部卡.但是,我在每张卡上应用一些随机旋转和定位,这意味着其中一些弯曲的角落,等等.这是一个屏幕截图: 我想做的是确定用户是否可以看到视图的任何部分,并删除其他视图完全涵盖的任何视图. 这些视图都是实例化的,它们都在同一超级图中,并且它们都在视图的范围内,因此使用这些方法将不起作用.我需要找出其他视图是否完全介绍了视图,这时我可以安全地将其删除,而无需看到用户消失. 解决方案 从概念上讲,您想迭代堆栈,将卡的路径结合到累积的路径中,然后用 Next Unim path检查联合路径.换句话说,如果向下添加下一个路径不会改变联合路径,则必须完全掩盖,因此可以被删除.看起来像这样: UIBezierPath* accumulator = nil; for (UIView* cardView in [[[containingView subviews] copy] reverseObjectEnu
我有下面的代码行...我将如何修改它以在" foo"的" foo"视图中插入子视图? [[self superview] addSubview:copy3]; 解决方案 有1种以上的方法 - 1.在您的代码中使用IBOutlet参考.这是由Xcode Interface Builder创建的.一旦有了这个,它就会直截了当 - [iboutlet_foo_object addSubview:copy3]; 2. tag您感兴趣的视图.再次标记一个视图可以从Xcode Interface Builder或代码中完成.之后 - Foo *fooObj = [[self superview] viewWithTag:tagInt]; [fooObj addSubview:copy3]; 3.在本文中,您可以迭代"超级视图"中的所有视图,并查看哪个类型Foo - NSArray *subviews = [[self superview] subviews
我想列出UIViewController中的所有子视图.我尝试了self.view.subviews,但并非所有子视图都列出了,例如,找不到UITableViewCell中的子视图.有什么想法吗? 解决方案 您必须递归迭代子视图. - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews = [view subviews]; for (UIView *subview in subviews) { // Do what you want to do with the subview NSLog(@"%@", subview); // List the subviews of subview [self listSubviewsOf
我想要presentViewController当提出alertController时. 我想要,诸如用户按下OK按钮,我想从Pushnotification上从AppDelegate显示ViewController. 我知道,这样UIAlertController在不同的线程上呈现,所以想要呈现ViewController在用户按下按钮后呈现ViewController,如下移动到主线程,如下所示: func presentRScreenFromRootViewController() { let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let rViewController = storyboard.instantiateViewControllerWithIdentifier("rsh") as! R_SVC dispatch_async(dis
这是一张解释我想做的一切的图片: 我的问题是,我将如何构建我的视图结构.表格视图的标题应固定在表格顶部.但是表格视图标题上方的最上面的图像呢?我是否必须在 UIScrollView 中添加表格视图? CATransform3D可以实现视差效果,但我要如何实现,这是我的问题.有很多演示,但我想定制. 解决方案 你可以在视图中添加图片视图 - let imageView = UIImageView() let lblName = UILabel() imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 300) imageView.image = UIImage.init(named: "poster") imageView.contentMode = .scaleAspectFill imageView.clipsToBounds = true vie
我想创建附件视图,放置在输入附件视图下,通过键盘,例如在 Skype 应用程序或 Viber 中: 我已经在这里问过这样的问题,但建议这个问题的解决方案不是那么优雅,因为当我将滚动视图拖到顶部时,我希望我的附件 UIView 用键盘向下移动(我使用 UIScrollViewKeyboardDismissModeInteractive). 所以我创建了一个函数,它找出视图、键盘和我的自定义输入附件视图的放置位置: func findKeyboardView() -> UIView? { var result: UIView? = nil let windows = UIApplication.sharedApplication().windows for window in windows { if window.description.hasPrefix("