是否可以将带自动布局的自定义UIView添加到iCarousel?
如果我在iCarousel委托方法
中创建自定义视图时尝试设置约束-(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
应用程序崩溃,因为在将视图添加到superview时可以添加约束,但此时它不是。
我有自定义视图的新xib。问题是我的自定义视图太大而无法容纳iPhone上的iCarousel,我在自定义视图中排列视图时没有问题但是我在iCarousel中调整我的自定义视图有问题,因为我不知道在哪里设置约束,因为悲伤的约束不能在" viewForItemAtIndex"中设置。因为视图在那时没有超视图
答案 0 :(得分:3)
您应该尝试向iCarousel视图添加约束,而不是为viewForItemAtIndex添加约束。如果视图中的组件需要约束,则可能需要在具有约束的新xib文件中创建视图,并在viewForItemAtIndex方法中调用该视图。我遇到了同样的问题并以这种方式解决了。
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view
{
CTProductDetailsInMapView *productView;
if (view == Nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CTProductDetailsInMapView" owner:self options:nil];
productView = (CTProductDetailsInMapView *) [nib objectAtIndex:0];
}
else
productView = (CTProductDetailsInMapView *)view;
}
return productView
}
CTProductDetailsInMapView是在接口文件中实现的UIView的子类。这里所有组件都有约束并且可以正常工作。
答案 1 :(得分:0)
我的解决方案是将frame.size.width / height
设置为:
// current view is view from xib
// don't set frame, just sizes
currentView.frame.size.width = 100 // or other value
currentView.frame.size.height = 100 // or other value
return currentView
希望对某人有帮助