使用autolayout将自定义UIView添加到iCarousel

NFi*_*lip 7 iphone objective-c ios icarousel

是否可以将自定义UIView与autolayout一起添加到iCarousel?

如果我在iCarousel委托方法中创建自定义视图时尝试设置约束

-(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
Run Code Online (Sandbox Code Playgroud)

应用程序崩溃,因为视图添加到superview时可以添加约束,但此时它不是.

我有自定义视图的新xib.问题是我的自定义视图太大而不适合iPhone上的iCarousel,我在自定义视图中排列视图没有问题,但是我在iCarousel中调整我的自定义视图有问题因为我不知道在哪里设置约束因为悲伤的约束不能在"viewForItemAtIndex"中设置,因为视图在那时没有superview

Moh*_*oys 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
Run Code Online (Sandbox Code Playgroud)

}

CTProductDetailsInMapView 是在接口文件中实现的 UIView 的子类。这里所有的组件都受到约束并正常工作。

  • 要调整其大小,您需要为“CTProductDetailsInMapView”添加宽度和高度约束,并为相应的类创建属性出口。然后你可以将其调整为 . [productView.widthConstraint setConstant:carousel.frame.size.width]; [productView.widthConstraint setConstant:carousel.frame.size.width]; (2认同)