在自动布局中把子视图的X放在中心,会出现 "未准备好约束 "的情况。
我有一个自定义的Uiview子类,该子类是通过笔尖初始化的. 在-awakeFromNib中,我正在创建一个子视图,并试图将其居中. [self setInteralView: [[UIView alloc] init]]; [[self internalView] addConstraint: [NSLayoutConstraint constraintWithItem: [self internalView] attribute: NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual
2 2024-03-20
编程技术问答社区
确定UIView是否被其他视图所覆盖?
我正在构建一个简单的纸牌游戏,将卡片放在中央堆上,我想在数字太大时开始删除底部卡.但是,我在每张卡上施加一些随机旋转和定位,这意味着其中一些弯曲的角落. 我想做的是确定用户是否可以看到视图的任何部分,并删除其他视图完全涵盖的任何视图. 这些视图都是实例化的,它们都在同一监督中,并且它们都在视图的范围内,因此使用这些方法将不起作用.我需要找出其他视图是否完全介绍了一个视图,这时我可以安全地将其删除,而无需看到用户消失. 解决方案 概念上,您想迭代堆栈,将卡的路径结合到累积的路径中,然后用 next Unime路径检查联合路径.换句话说,如果向下添加下一个路径不会改变联合路径,则必须完全掩盖,因此可以被删除.它看起来像这样: UIBezierPath* accumulator = nil; for (UIView* cardView in [[[containingView subviews] copy] reverseObjectEnumerator]) {
2 2023-11-05
编程技术问答社区
在键盘上显示带有按钮的UIView,就像Skype、Viber信使一样(Swift, iOS)。
我想创建附件视图,该视图将输入附件视图放置在键盘上,例如在Skype App或Viber中: 我已经问了这样的问题在这里,但建议这个问题的解决方案不是那么优雅,因为当我将滚动视图拖到顶部时,我想使用键盘向下移动(我使用uiscrollviewKeyboarddemboarddismissModeStractive). 因此,我创建了一个函数,可以找到视图,放置键盘和自定义输入附件视图: func findKeyboardView() -> UIView? { var result: UIView? = nil let windows = UIApplication.sharedApplication().windows for window in windows { if window.description.hasPrefix("
18 2023-11-05
编程技术问答社区
UIViewContentMode模式指的是什么类型的内容?
根据有关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* gr
8 2023-11-05
编程技术问答社区
什么是_UILayoutGuide?
我需要了解_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).如果有一个,则有一个类似的工具栏. 这样做的原因是这样您可以定义与UIVie
4 2023-11-05
编程技术问答社区
Swift中的recursiveDescription方法?
有没有办法在Swift中使用[self.view recursiveScription]?我正在尝试使用此方法,但我会收到以下错误: 'UIView' does not have a member named 'recursiveDescription' 有什么建议? 解决方案 为了访问Swift的私有/无证件的Objective-C API(例如UIView上的-recursiveDescription方法),您可以执行以下操作: 在类上创建新的Objective-C类别. hit 是如果Xcode询问您要配置桥接标头. (如果您的项目中已经有一个桥接标头,则将跳过此步骤). 可以删除类别的实现文件(.m). 在类别标题中声明私有方法: // UIView+Debugging.h @interface UIView (Debugging) - (id)recursiveDescription; @end 现在您可以设置一个断点并在LLDB中打
6 2023-11-05
编程技术问答社区
如何列出iOS中uiviewcontroller的所有子视图?
我想列出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
16 2023-11-05
编程技术问答社区
iOS。警告 "试图呈现ViewController,其视图不在窗口层次结构中"
当我尝试在导航控制器上介绍一个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
如何在UITableView的标题上添加具有视差效果的图片并保持标题的粘性?
这是一个解释我想做的一切的图像: 我的问题是,我将如何使我的视图结构.表视图的标题应固定在表格的顶部.但是,表视图标题上方的最高图像呢?我必须在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 =
14 2023-10-07
编程技术问答社区
如何在超级视图的视图中插入视图?(iOS)
我有下面的代码行...我将如何修改它以在" foo"的" foo"的视图中插入子视图? [[self superview] addSubview:copy3]; 解决方案 有1种以上的方法 - 1.在您的代码中使用IBOutlet参考.这是由Xcode Interface Builder创建的.一旦有了这个,它就会很直接 - [iboutlet_foo_object addSubview:copy3]; 2. tag您感兴趣的视图.再次标记一个视图可以从Xcode接口构建器或代码中完成.之后 - Foo *fooObj = [[self superview] viewWithTag:tagInt]; [fooObj addSubview:copy3]; 3.在本文中,您可以迭代超级视图中的所有视图,并查看哪个类型Foo - NSArray *subviews = [[self superview] subviews]; for(UIView *
16 2023-10-05
编程技术问答社区
检测一个UIView是否在另一个UIView的父辈后面
我有一个父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
18 2023-06-03
编程技术问答社区
使用hitTest:withEvent捕捉超视图框架外的子视图上的触动。
我的问题:我有一个基本上占用整个应用程序框架的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的子视图 图
14 2023-05-03
编程技术问答社区
尽管UIAlertController在视图层次中,但仍呈现一个ViewController。
我想要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
4156 2022-07-19
编程技术问答社区