我从笔尖加载一个视图,这个视图有几个子视图,位于xib上。 从nib加载此视图后,我尝试使用以下命令更改子视图框架:view.subLabel.frame = CGRectMake()。但是,这不起作用,我不知道为什么。我禁用了xib的autolayout属性,但它也不能正常工作。任何人都知道如何更改从xibs加载的视图框架?谢谢。
init和更改框架的代码如下:
初始化: GADNativeContentAdView * adView = [[[NSBundle mainBundle] loadNibNamed:@" loadingContent" owner:nil选项:nil] firstObject];
然后更改框架: adView.logoView.frame = CGRectMake(0,0,50,50);
但这不起作用。
答案 0 :(得分:0)
如果要更改子视图的大小或位置,则应使用NSAutolayout并使用NSAutoLayoutConstraints。例如,将高度约束声明为属性,将其连接到xib中,并以这种方式更改它:
myHeightConstraint.constant = newValue
UIView.animateWithDuration(duration, animations: {
self.view.layoutIfNeeded()
})
答案 1 :(得分:0)
user2053760,
使用
实例化视图时GADNativeContentAdView *adView = [[[NSBundle mainBundle] loadNibNamed:@"loadingContent" owner:nil options:nil] firstObject];
你没有指定它的帧,所以默认情况下它是用frame(0,0,0,0)实例化的。然后,您继续更改此adView中的视图,并将其框架设置为(0,0,50,50)。
如果保存subView的视图大小为(0,0),你如何期望subView可见?
所以首先将父框更改为
adView.frame = CGRectMake(0, 0,50, 50);
然后你可以设置childView的框架,
adView.logoView.frame = CGRectMake(0, 0,50, 50);
答案 2 :(得分:0)
尝试添加代码:
[view setAutoresizesSubviews:NO];
斯威夫特:
view.autoresizesSubviews = false