我有一个自定义UIView子类,该子类需要位于超级视图的底部。 我使用以下方法设置视图的原点:

CGRect subviewFrame = subview.frame;

CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height);

subviewFrame.origin = newOrigin;

[subview setFrame:subviewFrame];

但是,这会将子视图(origin.y)直接放置在超级视图的视图框架之外。

框架外的子视图

如果我使用:

CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height * 2.0f);

我得到了想要的结果,即位于窗口底部的子视图。

框架内的子视图

我不明白为什么我必须将子视图的高度乘以2。

如果有人能告诉我我所缺少的内容,将不胜感激。 谢谢!

===============>>#1 票数:1 已采纳

我正在使用[UIScreen mainScreen] .bounds获取初始帧,该帧不能补偿状态栏和导航栏。 UIScreen applicationFrame:返回减去状态栏高度的框架。 我使用这种方法,并考虑到导航栏的高度(44.0),以获得所需的结果。

===============>>#2 票数:1

有用的代码来绘制UIView的边界。 KADebugShowViewBounds(superview,[UIColor redColor])和KADebugShowViewBounds(subview,[UIColor redColor])。 您将看到红色的超级视图和子视图的边界。 我认为问题应该出在您的布局上。

#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>

#ifndef KAViewDebugHelper_h
#define KAViewDebugHelper_h

#ifdef DEBUG
#define KADebugShowViewBounds(aView, aColor) \
do \
{ \
    UIColor *color = [(id)aColor isKindOfClass:[UIColor class]] ? aColor : [UIColor redColor]; \
    aView.layer.borderColor = color.CGColor; \
    aView.layer.borderWidth = 1.0f; \
} \
while(0)
#else
#define KADebugShowViewBounds(aView)
#endif
#endif

  ask by Gabriel Ortega translate from so

未解决问题?本站智能推荐:

2回复

无法在Swift中的自定义UIView上布置子视图

所以我创建了这个自定义容器视图,我使用autolayout约束进行布局。 在视图控制器中, viewDidLoad()是这样的: 现在一旦设置了数据源并且我有friendStory计数,我将它分配给segmentContainerView.numberofSegments
3回复

iOS - 更改子类UIView的子视图的框架(使用启用了自动布局的故事板)

我正在构建一个自定义进度条(UIView的子类)。 我向UIView添加了一个UIImageView,它使用重复的图像来显示进度。 视图被添加到故事板中,我可以让它显示得很好,但是如果我尝试更改框架,那么它只显示故事板文件中显示的内容(即,如果故事板视图具有黄色背景,但代码uiview子类将
1回复

在iOS应用中动态更改子视图框架

我有一个视图,需要根据用户操作动态更改其子视图的框架。 加载视图时,我将初始化其子视图,如下所示: 接着: 初始化后,当我想修改子视图的框架时,我将执行以下操作: 我要做的是在用户点击按钮时调整子视图的Y坐标及其高度,并在用户再次点击按钮时取回子视图的原始帧。 但是,
1回复

无法从SuperView中删除自定义UIView

这是非常奇怪的。 当我向左或向右拖动视图时,我试图从超级视图中删除视图。 如果视图不包含任何子视图,那么我可以轻松地通过使用此card.removeFromSuperview()从superView中删除视图,但是,我注意到的是,如果将两个视图作为子视图添加到卡视图中,那么我无法将其从sup
1回复

UIView自定义类未显示在UIViewController中

我有一个TutorialInitialView .xib,.m,.h UIView扩展类,然后有一个UIViewController ,在viewDidLoad我执行以下操作: 但是,当我在模拟器中运行时,不会出现TutorialInitialView。 我究竟做错了什么?
2回复

子视图可见,但框架在超级视图框架之外

我有一个父VC,它在其中加载了一个子VC。 父VC中的代码如下: 子VC的代码如下: 使用此代码,子视图在其父视图上可见,并且正确应用了约束,因此子视图放置在父视图的底部,且前导和尾随均为0。但是,该视图的实际框架位于父视图之外。 也就是说,我可以在父视图的底部看到该子视
3回复

UIView的。 如何快速找到Root SuperView?

我在视图层次结构中有一个随机的子视图。 获得根超级视图的最佳/最快/最聪明的方法是什么? 干杯, 道格
2回复

从Superview中删除子视图

我确实在这个问题上停留了很长时间 我试图将UIControl (最后是UIView )添加到我自己的类中有子类的UITableViewCell (我创建了自定义单元格) 滑动后,我创建了我的UIControl类并将其添加到我自己(单元格)中,到目前为止一切顺利。 这是代码
1回复

在UIView中获取不是superview的视图框架

我认为这是一个简单的问题,但我似乎找不到办法做到这一点。 我有一个视图,是我的uiviewcontroller的子视图。 在那个视图中,我有另一种观点。 为了澄清,这是架构: 我想在uiviewcontroller.view获取subview b的框架。 这可能吗? s
1回复

在自定义UIView的updateConstraint函数中获取帧大小

我在下面的UpdateConstraint函数中的自定义UIView设置视图约束( UILabel , UIImageView )。 如图所示,我正在获取视图的高度并将其在自动布局内使用。 我知道我可以在layoutSubviews函数中获取帧大小。 如果我在layoutSubViews内