【发布时间】:2015-03-27 16:57:33
【问题描述】:
我有一个依赖于 iAdBanner 出现的 UIImageView 位置。我收到错误:
"<NSLayoutConstraint:0x17409eb40 UIImageView:0x1741e9200.bottom == UIView:0x17418d270.bottom - 100>",
"<NSLayoutConstraint:0x174281e00 UIImageView:0x1741e9200.bottom == UIView:0x17418d270.bottom - 50>"
关于造成这种情况的任何想法?下面是设置 uiimageview 的代码,根据 iAd 是否加载,设置它的高度。
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sunshine.png"]];
CGRect frame = imgView.frame;
frame.size.width = 180;
frame.size.height = 30;
imgView.frame = frame;
imgView.translatesAutoresizingMaskIntoConstraints = NO;
[imgView setContentMode:UIViewContentModeScaleAspectFit];
[imgView sizeToFit];
[self.view addSubview:imgView];
[self.view addConstraint:[NSLayoutConstraint
constraintWithItem:imgView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:6.0]];
_imgView = imgView;
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[banner setAlpha:1];
[UIView commitAnimations];
[self.view addConstraint:[NSLayoutConstraint
constraintWithItem:_imgView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:-100.0]];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[banner setAlpha:0];
[UIView commitAnimations];
[self.view addConstraint:[NSLayoutConstraint
constraintWithItem:_imgView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:-50.0]];
}
【问题讨论】:
-
显示约束和错误日志。它会帮助我们更多。
-
您需要包含产生的 full 错误,以及用于创建约束的任何代码,或故事板中约束的屏幕截图。但从它的声音来看,你有两个相互矛盾的约束,不可能按照你想要的方式工作。
标签: ios objective-c uiimageview autolayout