我正在创建一个类似于照片应用的ImageViewer.我有一个PagingScrollView,它是视图控制器的视图(在loadView中创建).这些页面是带有UIImageView子视图的UIScrollViews.一切都工作hunky dory,直到我尝试'跳过'(设置内容偏移)到除第一个之外的索引.如果我跳过说图像'i',则图像被正确显示但是如果用户执行单击操作,则contentOffset将自身重置为显示图像'0'.其他手势(如拖动)不会发生此错误,如果您先执行另一个手势,则不会触摸该错误.
这是我的ImageViewerController的loadView
- (void)loadView
{
//Make the outer spaging scroll view
CGRect pagingScrollViewFrame = [self frameForPagingScrollView];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
scrollView.pagingEnabled = YES;
scrollView.backgroundColor = [UIColor blackColor];
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.contentSize = [self contentSizeForPagingScrollView];
scrollView.delegate = self;
self.view = scrollView;
}
Run Code Online (Sandbox Code Playgroud)
这就是我试图设置内容偏移量的方法
#define myView (UIScrollView *)self.view
[myView setContentOffset:[self contentOffsetForIndex:index]];
[..]
- (CGPoint)contentOffsetForIndex:(NSUInteger)index
{
return CGPointMake((index * (self.view.frame.size.width)), 0);
}
Run Code Online (Sandbox Code Playgroud) 我有一个UILabel我希望动画成长和缩小.当尺寸发生变化时,我需要左下角保持静止,以便它始终显示在底部工具栏的正上方.我使用以下代码使标签增长:
[UIView animateWithDuration:kAnimationDuration delay:0.0 options:UIViewAnimationCurveEaseInOut
animations:^{
CGFloat lblHeight = 42.0f;
[label setFrame:CGRectMake(0.0,
CGRectGetMaxY(self.view.bounds) - kBottomBarHeight - lblHeight,
CGRectGetMaxX(self.view.bounds),
lblHeight)];
} completion:^(BOOL finished) { }];
Run Code Online (Sandbox Code Playgroud)
为了使它缩小我使用相同的逻辑,除了lblHeight设置为17.0f
视图正确增长但是当我尝试缩小它时,帧更改动画不会动画化.它会突然显示新的大小,然后动画到新的原点/位置.我需要将帧更改设置为动画.谁能看到我做错了什么?