こんにちは、私のアプリでは、水平方向のリストに画像のリストを中央にフォーカスして表示する必要があります。andを使用するUIScrollView
と正常に機能しPagingEnable=Yes
ます。UIScrollView
境界の外に表示されているコンテンツをスクロールできませんでした。
UiscrollView を外側の境界からスクロールするにはどうすればよいですか。
こんにちは、私のアプリでは、水平方向のリストに画像のリストを中央にフォーカスして表示する必要があります。andを使用するUIScrollView
と正常に機能しPagingEnable=Yes
ます。UIScrollView
境界の外に表示されているコンテンツをスクロールできませんでした。
UiscrollView を外側の境界からスクロールするにはどうすればよいですか。
画像と同じ高さのコンテナー ビューがあるとしますが、すべての画像が収まるようにサイズ設定されています。各画像のフレームには、その前の画像の最後に配置する「x」オフセットがあります。ここで、コンテナに 3 つの画像があり、それぞれが幅 320 で、合計 960 であるとします。
それを考えると、 scrollView.contentSize = CGSizeMake(960, 320); を設定する必要があります。
ここでは、スクロールビューを水平方向に管理する方法についてのチュートリアルを以下に示します。
.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];
}
これがあなたに役立つことを願っています。