标签: uiscrollviewdelegate

UITableView拉动刷新导致闪烁.怎么预防呢?

我正在做那种下拉到刷新的事情.在scrollViewDidEndDecelerating中,我检查偏移是否超过某个点,并在scrollViewDidEndDragging中设置contentInset,以便保持下拉部分可见.

但是,这会导致闪烁,可能是由于在滚动动画期间重置了contentInset.我想我可以通过在scrollViewWillEndDragging中设置targetContentOffset来阻止这种情况,但它似乎没有做到这一点.

 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{

     if (scrollView.contentOffset.y < -kRefreshViewDelta) 
     {
         self.tableView.contentInset = UIEdgeInsetsMake(kRefreshViewHeight, 0.0f, 0.0f, 0.0f);

     }
}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
 {
     if (scrollView.contentOffset.y  < -kRefreshViewDelta) 
     {
          targetContentOffset->y = kRefreshViewHeight ;
     }
 }
Run Code Online (Sandbox Code Playgroud)

uitableview uikit uiscrollviewdelegate ios pull-to-refresh

5
推荐指数
1
解决办法
5465
查看次数

iOS6 ScrollBarShouldScrollToTop没有触发/ ScrollView Delegate问题

我正在向我的应用添加一个虚拟ScrollView,以检测用户在状态栏上的点击,在我的程序中执行一个事件..我在ViewDidLoad中创建它:

//Dummy Scroll is for the tap on status bar to work 

UIScrollView *dummyScrollView = [[UIScrollView alloc] init]; 
dummyScrollView.delegate = self; 
[[self view ] addSubview:dummyScrollView]; 
[[self view] sendSubviewToBack:dummyScrollView];  
Run Code Online (Sandbox Code Playgroud)

然后我实施:

 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView 
 { 

NSLog(@"scrollViewShouldScrollToTop");
 .
 .
 }
Run Code Online (Sandbox Code Playgroud)

在所有以前版本的IOS中,这种工作非常漂亮且完美无缺,但在iOS 6下,scrollViewShouldScrollToTop永远不会被调用.这是一个错误?API说它仍然可以作为iOS6中委托的一部分使用,但在设备和模拟器上的iOS6下它永远不会执行......任何人都知道发生了什么?

仍然没有其他TableView或ScrollView,但有一个MAPVIEW ?? 但是MapView没有我可以找到设置为NO的shouldScrollToTop ..所以我仍然无法理解为什么它在iOS 6下停止工作...

uiscrollview uiscrollviewdelegate ios6

5
推荐指数
2
解决办法
2435
查看次数

UIScrollView里面的UIImageView太远了

我有一个问题,我在UIScrollView中有一个UIImageView.在Interface Builder中,UIScrollView占用整个屏幕,UIImageView占用整个UIScrollView.问题是,当我有一个横向导向的图像时,我将它设置为纵横比较,所以我在顶部和底部有灰色条纹(这就是我想要的).然而,当我放大照片时,一旦照片变焦到足以适合屏幕垂直,我希望它不会平移到它上面的灰色区域.查看我附上的屏幕截图.我基本上希望它在这方面像照片应用程序一样工作.这是我设置UIScrollView和UIImageView的代码:

- (void)viewDidLoad
{
   [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
   self.imageView.image = [UIImage imageNamed:@"IMG_0300.JPG"];
   self.imageView.contentMode = UIViewContentModeScaleAspectFit;
   self.scrollView.clipsToBounds = YES;
   self.scrollView.contentSize = self.imageView.bounds.size;
   self.scrollView.zoomScale = 1.0;
   self.scrollView.maximumZoomScale = 5.0;
   self.scrollView.minimumZoomScale = 1.0;

}

-(void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
   return self.imageView; 
}
Run Code Online (Sandbox Code Playgroud)

看看它是如何平移的

提前致谢.

雅各

uiscrollview uiimageview uiscrollviewdelegate ios ios6.0

5
推荐指数
1
解决办法
3927
查看次数

为什么缩放时会调整UIScrollView的contentSize?

在下面的代码中,我看到一个红色的正方形出现,可以滚动浏览(因为scrollview的内容是4x屏幕)。

但是,一旦我开始缩小(比例<1.0),滚动视图contentSize就会立即跳转到scaleiPad屏幕大小的几倍。例如:

0.985783 757.081249 1009.441665
Run Code Online (Sandbox Code Playgroud)

之后,我将无法再移动广场。当scaleget大于1.0 时,我只能移动正方形。在这种情况下,滚动指示器显示contentSize仍然是scale屏幕尺寸的乘积。

另一个效果是,当缩小到1.0以下时,红色方块通常会通过缩小移向左上角。但是,释放屏幕后(没有任何进一步的缩放),它甚至会移动到角落。编辑:这必须是滚动视图的橡皮筋。

(正方形本身确实按预期比例缩放。)

我在这里想念的是什么?这是我的视图控制器代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.scrollView                  = [[UIScrollView alloc]initWithFrame:self.view.bounds];
    self.scrollView.contentSize      = CGSizeMake(self.view.bounds.size.width * 2, self.view.bounds.size.height * 2);
    self.scrollView.backgroundColor  = [UIColor colorWithWhite:0.5f alpha:1.0f];
    self.scrollView.minimumZoomScale = 0.1f;
    self.scrollView.maximumZoomScale = 4.0f;
    self.scrollView.clipsToBounds    = YES;
    self.scrollView.delegate         = self;

    self.contentView = [[UIView alloc] initWithFrame:self.scrollView.bounds];
    [self.scrollView addSubview:self.contentView];
    [self.view addSubview:self.scrollView];

    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(400, 400, 100, 100)];
    view.backgroundColor = [UIColor redColor];
    [self.contentView addSubview:view];
}

#pragma …
Run Code Online (Sandbox Code Playgroud)

objective-c uiscrollview uiscrollviewdelegate ios

5
推荐指数
0
解决办法
837
查看次数

如何以编程方式缩放UIScrollView与我手动缩放的方式完全相同

我有两个UIScrollView并排,我正在研究的一个功能是能够捏合和缩放1个UIScrollView,并让另一个旁边的它以与我正在点击的方式相同的方式响应.特别感兴趣的是放大其他UIScrollView放大的同一区域.设置zoomScale是一回事,但是完全模仿缩放行为是另一回事.

我怎样才能做到这一点?

iphone zoom uiscrollview uiscrollviewdelegate

4
推荐指数
1
解决办法
8312
查看次数

更改子视图后,UIScrollView不遵守minimumZoomScale

我正在遇到一个问题,让UIScrollView正确更新,以响应最小缩放比例的变化.

scrollview有一个UIImageView作为子视图,UIImageView的image属性是为响应UIPickerView的didFinishPickingMediaWithInfo方法而设置的:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *takenImage = [info objectForKey:UIImagePickerControllerOriginalImage];

    [self.imageView setImage:takenImage];
    [self.imageView setFrame:CGRectMake(self.imageView.frame.origin.x, self.imageView.frame.origin.y, takenImage.size.width, takenImage.size.height)];

    [self.scrollView setContentSize:CGSizeMake(takenImage.size.width, takenImage.size.height)];

    [self.scrollView setMinimumZoomScale:[self.scrollView frame].size.width / takenImage.size.width];
    [self.scrollView setMaximumZoomScale:2.0];
    [self.scrollView setZoomScale:[self.scrollView minimumZoomScale] animated:YES];

    [self dismissModalViewControllerAnimated:YES];        

}
Run Code Online (Sandbox Code Playgroud)

这在第一次使用此方法添加图像时正常工作.但是,如果再次触发此方法 - 即使添加与第一次相同的图像 - 后续图像在scrollView中以完整大小显示,并且无法缩小 - 仅放大.

我甩了contentSize,zoomScale,minimumZoomScalemaximumZoomScale滚动视图中的日志,他们每次都相同.所述minimumZoomScale被正确每次计算.

这就好像滚动视图被重绘minimumZoomScale为1.0,忽略了它已被明确设置的事实.我有什么明显的遗漏吗?

objective-c uiscrollview uiscrollviewdelegate ios

4
推荐指数
1
解决办法
1986
查看次数

检测滚动UICollectionView的方向,从REST加载数据

假设标准配置(向上/向下),我想检测用户何时UIColletionView向上或向下滚动(这是子类UIScrollView和符合的类型UIScrollViewDelegate).我没有看到代表直接发现任何信息来检测这一点,尽管我可能已经在寻找一些东西了.

如果我知道用户正在滚动的方向,那么我可以使用这些UICollectionViewDatasource方法来确定是否应该从REST服务器加载更多数据,或者清除我已经拥有的用于管理固定内存空间的信息.

//如果向下滚动,则显示部分

- (UICollectionReusableView *)collectionView:(UICollectionView *)cv viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
Run Code Online (Sandbox Code Playgroud)

//如果向下滚动,则节中的最后一个单元格正在消失

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
Run Code Online (Sandbox Code Playgroud)

//如果向上滚动,则显示部分中的最后一个单元格

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
Run Code Online (Sandbox Code Playgroud)

//如果向上滚动,部分就会消失

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath{
Run Code Online (Sandbox Code Playgroud)

iphone uiscrollviewdelegate ipad ios uicollectionview

4
推荐指数
1
解决办法
4348
查看次数

UIScrollView不滚动

我有一个根本不滚动的UIScrollView.如果我启用弹跳,我可以向侧面滚动足够远以查看视图外部有内容,但是当我释放时它会快速回到原点.我打开了分页,但如果我将其关闭,我会得到相同的行为.我关闭了自动布局.在IB中,scrollView位于MainViewController中,正确链接到IBOutlet,如下所示.

@interface MainViewController ()

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;

@end

@implementation MainViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    for (int i = 0; i < 3; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        // I might be doing this wrong, but it returns a PosterView object just like I want it to.
        NSArray *view = [[NSBundle mainBundle] loadNibNamed:@"posterView" owner:self options:nil];
        [[view objectAtIndex:0] setFrame:frame];

        [self.scrollView addSubview:[view objectAtIndex:0]];
    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 3, …
Run Code Online (Sandbox Code Playgroud)

uiscrollview uiscrollviewdelegate ios ios7

4
推荐指数
1
解决办法
6154
查看次数

协议实现协议的默认实现

我正在尝试创建一个由某些类实现的协议,所有这些都应该实现UIScrollViewDelegate.我想到的是我的新协议实现协议UIScrollViewDelegate.

protocol MyProtocol: UIScrollViewDelegate {
    var myVar: NSString { get }
    func myMethod()
}
Run Code Online (Sandbox Code Playgroud)

由于协议应具有其默认实现,因此我还为此协议创建了扩展.

extension MyProtocol {
    func myMethod() {
        print("I'm printing")
    }

    func scrollViewDidScroll(scrollView: UIScrollView) {
        print("I'm scrollin")
    }
}
Run Code Online (Sandbox Code Playgroud)

它编译,但不起作用.我做错了什么以及创建扩展协议的默认实现的正确方法是什么?

uiscrollviewdelegate ios swift swift-extensions swift-protocols

4
推荐指数
1
解决办法
3544
查看次数

在滚动期间更改背景颜色

我有一个我的应用程序的入门部分,有4页用户水平滚动,以了解如何使用该应用程序(标准).我希望在用户从一个页面滚动到另一个页面时转换背景颜色.

我有我想要使用的4个RGB值:

241170170

170201241

188170241

241199170

我知道我必须使用滚动视图委托+内容偏移来更改uicolor值,但我不知道如何让它去我选择的特定颜色.

任何帮助将不胜感激.任何实施都可以,迅捷或客观

谢谢

objective-c uiscrollview uiscrollviewdelegate ios swift

3
推荐指数
1
解决办法
2750
查看次数