繁体   English   中英

增加UIView的高度并更改背景颜色-无法使其正常工作

[英]Increasing height of UIView and changing background colour - can't make it work

我已经在Interface Builder中绘制了一个UIView (scrollInner),现在我要以编程方式增加其高度,并更改其背景颜色。

UIViewUIScrollView ,并且滚动一切正常。 基本上,我正在做的是尝试增加内部UIView ,使其与UIScrollView的contentSize相匹配。

到目前为止,这是我在viewDidAppear方法中得到的:

CGRect scrollInnerRect = self.scrollInner.frame;
scrollInnerRect.size.height = 1000;
self.scrollInner.frame = scrollInnerRect;
[self.scrollInner setBackgroundColor:[UIColor redColor]];

UIView的背景颜色按预期更改为红色,但“ UIView”的高度保持与在Interface Builder中设置的大小相同。

但是,如果我这样做:

NSLog(@"My uiview's frame is: %@", NSStringFromCGRect(scrollInner.frame));

我在日志中得到这个:

My uiview's frame is: {{0, 150}, {320, 1000}}

...这表明UIView的高度已增加。

但这不是它在模拟器中的显示方式。 换句话说,在屏幕上, UIView的颜色为红色,但是没有新的高度1000px-仍然更短。

有什么想法我可能会出错吗?

谢谢。

检查是否已启用自动布局,如果删除间距并通过view.frame = CGrectMake(x,y,yourwidth,yourincreasedheight)确定子视图的高度

您可以在接口构建器中将连接从UIView添加到类扩展以创建属性。 之后,您可以像这样对代码进行更改。

self.myView.frame = self.scrollInner.contentSize.

您可以像这样更改UIView颜色:

[self.myView setBackgroundColor:[UIColor redColor]];

编写以下代码后,在身份检查器中禁用'use Autolayout'属性,以在xib文件中正确检查您的插座:

CGRect scrollInnerRect = self.scrollInner.frame;

scrollInnerRect.size.height = CGrectMake(x,y,320,1000);

您可能已解决此问题。 这可能会帮助其他人。

我们可以为视图高度创建并保留NSLayoutConstraint的引用。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint * scrollInnerHeightConstraint;

我们可以使用此高度约束在需要的地方更新视图高度

scrollInnerHeightConstraint.constant = 1000;//1000 is your height
scrollInnerHeightConstraint.priority = 1000;//1000 is High priority

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM