在 iOS 的超级视图/父视图控制器中读取子元素坐标

Posted

技术标签:

【中文标题】在 iOS 的超级视图/父视图控制器中读取子元素坐标【英文标题】:Reading sub elements coordinates in superview/parent view controller in iOS 【发布时间】:2012-07-03 14:15:47 【问题描述】:

所以我创建了一个视图控制器,它创建了一个自定义视图,如果它包含两个元素,则在它们之间创建一条线。一个分隔符。

视图及其元素在 Interface Builder 中创建,并在那里设置它们的位置。

我要做的是读取子元素的原点坐标和宽度/高度,以便我可以动态地在它们之间绘制分隔符。

我尝试使用 NSArray self.subviews 并尝试使用 NSView 类中的方法 convertRectconvertPoint

有人知道我该怎么做吗?

所有帮助将不胜感激。

【问题讨论】:

【参考方案1】:

这是一个相当有趣的请求,但我认为这应该可以很好地工作。这假设子视图是左/右,如果您需要上/下,则将 >= 反转为

-(void)example 
        if (self.view.subviews.count ==2) 
             CGPoint origin1 = [self.view.subviews objectAtIndex:0].frame.origin;
             CGPoint origin2 = [self.view.subviews objectAtIndex1].frame.origin;
             if (origin1.x >= origin2.x)
                 [[self.view.subviews objectAtIndex:0]setFrame:someFrameOnTheLeft];
                 [[self.view.subviews objectAtIndex:0]setFrame:someFrameOnTheRight];
              
     

【讨论】:

【参考方案2】:

将出口链接到 xib 中的每个子视图,请参阅access view inside a storyboard

致电您的网点upperViewlowerView

现在获取视图的来源

float x = upperView.frame.origin.x;
float y = upperView.frame.origin.y;

【讨论】:

是的,这可行,但我正在尝试创建一个动态视图控制器,该控制器可以检测某些元素是否存在,并根据它们的信息进行某些 ui 调整。感谢您尝试提供帮助。

以上是关于在 iOS 的超级视图/父视图控制器中读取子元素坐标的主要内容,如果未能解决你的问题,请参考以下文章

从超级视图中删除视图时出错

在 Cocoa,UIResponder 中将消息从子视图发送到父视图?

子视图约束到父视图 iOS

(iOS) 音频播放器作为应用程序中所有父视图控制器上的子视图控制器

iOS-获取子视图父控制器

iOS - 界面生成器 - 不继承父视图 alpha 的子视图