如何使当前视图的特定区域成为我的视图?

Posted

技术标签:

【中文标题】如何使当前视图的特定区域成为我的视图?【英文标题】:how to make a specific area of current view to be my view? 【发布时间】:2017-07-14 10:19:59 【问题描述】:

如何获得视图的底部?

由于使用CGRectMake只能从上到下获取,是否有可能或者有其他功能可以使用坐标获取那部分视图?

[self.view setFrame:CGRectMake(0, -keyboardHeight, self.view.frame.size.width, tempViewHeight-toolbarHeight)];

因为我使用负值来设置 y 坐标,这会将我的视图向上拉,但是滚动条可以滚动到边界之外,并且无法看到上面延伸的内容。

【问题讨论】:

意思是,你想要那个视图的屏幕截图? @AndeySatyanarayana 不是屏幕截图,但实际上是视图,因为我正在开发一个消息传递应用程序,当键盘抬起时,对话 tableview 也应该抬起,但是当我使用 -keyboardHeight 作为 y -坐标,当我在该视图上滚动时,并非所有行都可以滚动,因为视图的上半部分不在屏幕上,这使我在抬起键盘时无法滚动到该部分 【参考方案1】:

您只需提供适当的 Y 坐标即可为该突出显示的区域创建一个 CGRect。这是一个例子:

CGRectMake(0, yourView.frame.height/2, yourView.frame.width, yourView.frame.height)

这将为您提供视图的下半部分。

【讨论】:

但是由于 y 坐标停留在下半部分,我如何将这个底部部分粘贴到屏幕顶部,如果你点击我的链接有一个图像,我想剪掉那部分视图并把它放回顶部,即 (x, y)= (0,0) 那么您是想将下半部分移到屏幕顶部吗?为此,您可以这样做:youView.frame.origin.y -= yourView.frame.height/2 我试过了,但这也只是把整个视图向上推,滚动条仍然超出了顶部边界 我无法清楚地了解您想要实现的目标...您的屏幕截图中没有可见的滚动条...可以提供更多屏幕截图并解释更多... 我想做一个消息应用程序,当键盘抬起整个对话时,tableview 向上移动,但是如果我将 origin.y 设置为负值,当我滚动到最上面一行时(键盘仍然向上),由于 origin.y 为负数,因此该行将超出屏幕范围【参考方案2】:
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
view.backgroundColor=[UIColor grayColor];
[self.view addSubview:view];
view.frame=CGRectMake(0, self.view.frame.size.height/2, self.view.frame.size.width,  self.view.frame.size.height);

【讨论】:

以上是关于如何使当前视图的特定区域成为我的视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImageView 放置在子视图的特定区域中

如何反转 UIView 特定区域的颜色?

如何在android中使视图周围的区域变暗?

当 Push Notification AlertView 出现在视图上时如何突出显示特定的视图区域?

如何在 SwiftUI 中使整个列表行成为 NavigationLink

使 UITapGestureRecognizer 不消耗与视图无关的点击