[英]Increasing height of UIView and changing background colour - can't make it work
我已经在Interface Builder中绘制了一个UIView
(scrollInner),现在我要以编程方式增加其高度,并更改其背景颜色。
UIView
在UIScrollView
,并且滚动一切正常。 基本上,我正在做的是尝试增加内部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.