0

こんにちは、私のアプリでは、水平方向のリストに画像のリストを中央にフォーカスして表示する必要があります。andを使用するUIScrollViewと正常に機能しPagingEnable=Yesます。UIScrollView境界の外に表示されているコンテンツをスクロールできませんでした。

UiscrollView を外側の境界からスクロールするにはどうすればよいですか。

4

2 に答える 2

1

画像と同じ高さのコンテナー ビューがあるとしますが、すべての画像が収まるようにサイズ設定されています。各画像のフレームには、その前の画像の最後に配置する「x」オフセットがあります。ここで、コンテナに 3 つの画像があり、それぞれが幅 320 で、合計 960 であるとします。

それを考えると、 scrollView.contentSize = CGSizeMake(960, 320); を設定する必要があります。

于 2012-08-13T13:10:14.220 に答える
0

ここでは、スクロールビューを水平方向に管理する方法についてのチュートリアルを以下に示します。

.h ファイルが含まれています

@property (nonatomic, strong) NSArray *arForImages; // array for storing images URL
@property (nonatomic, strong) IBOutlet UIScrollView *scrPage; // scroll view used as PageCtr
@property (nonatomic, strong) IBOutlet HJManagedImageV *imgV; // Image to display selected
@property (nonatomic, strong) IBOutlet UILabel *lblName; // label to display selected's title
@property (nonatomic, readwrite) NSUInteger currentPage; // to mantain current page

.m ファイルが含まれています

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.arForImages = [NSArray arrayWithObjects:@"http://www.apple.com/in/iphone/iphone-3gs/images/iphone-phone-20100607.jpg",@"http://www.apple.com/in/iphone/iphone-3gs/images/iphone-ibooks-20100607.jpg",@"http://www.blogcdn.com/www.engadget.com/media/2007/01/apple-iphone-official-1.jpg",@"http://www.dailytechpost.com/wp-content/uploads/2011/08/iphone-3G1.jpg",@"http://www.iunlockiphone3g.com/wp-content/uploads/2011/01/Apple-Iphone-India-Launch1.jpg",@"http://st2.gsmarena.com/vv/pics/apple/apple-iphone-3g-01.jpg",@"http://resources.infosecinstitute.com/wp-content/uploads/iphone.jpg",@"http://bindapple.com/wp-content/uploads/2011/01/can-iphones-get-viruses1.jpg",@"http://www.coolpctips.com/wp-content/uploads/2011/08/iphone-mailbox.jpg",@"http://www.everymac.com/images/other_images/iphone-iphone-3g-comparison.jpg",@"http://iphone4issues.org/wp-content/uploads/2011/07/Iphone-4-Issues1.jpg",nil];

    [self setupImages];
}

スクロールビューのページネーション

#define kXDistance    5
#define kYDistance    5
#define kThumbWidth   58
#define kThumbHeight   58
#define kTagForImageView    10000

- (void)setupImages {
    // This will remove all subview from your scrollView
    [[self.scrPage subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

    // set the content size of your scrollView to number of object that you have in your array
    self.scrPage.contentSize=CGSizeMake((self.arForImages.count+4)*63, 68);

    // we will start from two in this tutorial, you can start from one also.
    NSUInteger i=2; // images starting from location 2
    for (NSString *str in self.arForImages) {
        // buttons will have images within it & we will add buttons to scrollView
        UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
        NSUInteger xVal=(i+1)*kXDistance;
        xVal = xVal + (i*kThumbWidth);
        [btn setFrame:CGRectMake(xVal, kYDistance, kThumbWidth, kThumbHeight)];
        btn.tag=i-1; // index tagging strating from 1

        HJManagedImageV *imgV=[[HJManagedImageV alloc] initWithFrame:CGRectMake(0, 0, kThumbWidth, kThumbHeight)];
        imgV.tag=kTagForImageView;
        imgV.url=[NSURL URLWithString:[self.arForImages objectAtIndex:i-2]];
        imgV.clipsToBounds=YES;
        imgV.layer.borderColor = [[UIColor blackColor] CGColor];
        imgV.layer.borderWidth = 1;
        imgV.layer.cornerRadius = 3;

        // here GlobalCacheManager is an object declared in AppDel which is accessed via a Constant
        [GlobalCacheManager manage:imgV];

        [btn addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchDown];
        [btn addSubview:imgV];

        [self.scrPage addSubview:btn];
        i++;
    }
    self.lblName.text=[[self.arForImages objectAtIndex:0] lastPathComponent];
    self.imgV.url=[NSURL URLWithString:[self.arForImages objectAtIndex:0]];
    [GlobalCacheManager manage:self.imgV];
    self.currentPage = 0;
}

- (void)btnTapped:(UIButton*)btn {
    self.scrPage.delegate=nil;
    CGRect rectToScroll = btn.frame;
    rectToScroll=CGRectMake(rectToScroll.origin.x-63-63, kYDistance, 320, 68);
    [self.scrPage scrollRectToVisible:rectToScroll animated:YES];
    self.lblName.text=[[self.arForImages objectAtIndex:btn.tag-1] lastPathComponent];
    self.imgV.url=[NSURL URLWithString:[self.arForImages objectAtIndex:btn.tag-1]];
    [GlobalCacheManager manage:self.imgV];
    [self.scrPage performSelector:@selector(setDelegate:) withObject:self afterDelay:0.3];
}

これがあなたに役立つことを願っています。

于 2012-08-13T13:05:43.457 に答える