Пытаюсь разобраться в
SwipeView, возникла проблема при использовании в своем проекте, использую следующий код из примера
(Paging example):
-(void)viewDidLoad{
[super viewDidLoad];
_swipeView.pagingEnabled = YES;
}
- (NSInteger)numberOfItemsInSwipeView:(SwipeView *)swipeView{
return [_items count];
}
- (UIView *)swipeView:(SwipeView *)swipeView viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view{
//create new view if no view is available for recycling
if (view == nil)
{
//don't do anything specific to the index within
//this `if (view == nil) {...}` statement because the view will be
//recycled and used with other index values later
view = [[UIView alloc] initWithFrame:self.swipeView.bounds];
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
//set background color
CGFloat red = arc4random() / (CGFloat)INT_MAX;
CGFloat green = arc4random() / (CGFloat)INT_MAX;
CGFloat blue = arc4random() / (CGFloat)INT_MAX;
view.backgroundColor = [UIColor colorWithRed:red
green:green
blue:blue
alpha:1.0];
return view;
}
- (CGSize)swipeViewItemSize:(SwipeView *)swipeView
{
return self.swipeView.bounds.size;
}
Приложение падает с ошибкой:
CALayer position contains NaN: [nan 284]
и указывает на линию с
view.center = CGPointMake(center.x, _scrollView.frame.size.height/2.0f);
.
Весь метод:
- (void)setFrameForView:(UIView *)view atIndex:(NSInteger)index
{
if (self.window)
{
CGPoint center = view.center;
if (_vertical)
{
center.y = ([self offsetForItemAtIndex:index] + 0.5f) * _itemSize.height + _scrollView.contentOffset.y;
}
else
{
center.x = ([self offsetForItemAtIndex:index] + 0.5f) * _itemSize.width + _scrollView.contentOffset.x;// center.x NAN
}
BOOL disableAnimation = !CGPointEqualToPoint(center, view.center);
BOOL animationEnabled = [UIView areAnimationsEnabled];
if (disableAnimation && animationEnabled) [UIView setAnimationsEnabled:NO];
if (_vertical)
{
view.center = CGPointMake(_scrollView.frame.size.width/2.0f, center.y);
}
else
{
view.center = CGPointMake(center.x, _scrollView.frame.size.height/2.0f);
}
view.bounds = CGRectMake(0.0f, 0.0f, _itemSize.width, _itemSize.height);
if (disableAnimation && animationEnabled) [UIView setAnimationsEnabled:YES];
}
}
При использовании брекпойнтов показывает, что center.x в определенный момент становится NAN(в коменте указал где). Не могу понять в чем проблема, вроде делаю все как в примере. Прошу помочь разобраться что делать.
EDIT:
Нашел причину проблемы: это связано с тем, что есть Navigation segue из начального ViewControllera в VC c SwipeView.
Github