0

UIButton画像の完成を見せたいUIScrollView。以下のコードUIButtonが表示されていますが、UIImageViewsをスクロールすると、最初のimageviewにのみUIButton表示されますが、必要に応じて、のすべての画像ビューに表示されUIScrollViewます。

 - (void)viewDidLoad

 {
 self.view.backgroundColor = [UIColor blackColor];
UIScrollView *imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

[myButton addTarget:self action:@selector(dismissView:) forControlEvents:UIControlEventTouchUpInside];

myButton.frame = CGRectMake(0, 0, 60, 35);

[myButton.layer setMasksToBounds:YES];

[myButton.layer setCornerRadius:10.0f];

myButton.layer.borderWidth = 2;

myButton.layer.borderColor = [[UIColor whiteColor] CGColor];

[myButton setTitle:@"Done" forState:UIControlStateNormal];

myButton.backgroundColor = [UIColor blackColor];

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView:myButton];

[[self navigationItem] setRightBarButtonItem:button animated:YES];
imageScrollView.pagingEnabled = YES;
NSInteger numberOfViews = 61;
for (int i = 0; i < numberOfViews; i++) {
    CGFloat xOrigin = i * self.view.frame.size.width;

    NSString *imageName = [NSString stringWithFormat:@"image%d.png", i];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height);
    [imageScrollView addSubview:imageView];
    [imageScrollView addSubview:myButton];
    [imageView release];
   }
imageScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:imageScrollView];
[imageScrollView release];
 }

UIButtonスクロールしたときにすべての画像ビューにDoneが表示されるようにコーディングするにはどうすればよいですか。

4

2 に答える 2

1

forループを追加します。UIButtonつまり、新しいものが追加されるたびにImageView追加できます。x_Originそしてそれぞれのためにそれを変更しますimageView-

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    UIScrollView *imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    imageScrollView.pagingEnabled = YES;
    NSInteger numberOfViews = 61;

    for (int i = 0; i < numberOfViews; i++) 
    {
        CGFloat xOrigin = i * self.view.frame.size.width;
        UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [myButton addTarget:self action:@selector(dismissView) forControlEvents:UIControlEventTouchUpInside];
        myButton.frame = CGRectMake(xOrigin, 0, 60, 35);
        [myButton setTitle:@"Done" forState:UIControlStateNormal];
        myButton.backgroundColor = [UIColor blackColor];
        [myButton.layer setMasksToBounds:YES];

       [myButton.layer setCornerRadius:10.0f];
        myButton.layer.borderWidth = 2;
        myButton.layer.borderColor = [[UIColor whiteColor] CGColor];

        NSString *imageName = [NSString stringWithFormat:@"image%d.png", i];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        imageView.frame = CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height);
        [imageScrollView addSubview:imageView];
        [imageScrollView addSubview:myButton];
    }

    imageScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
    [self.view addSubview:imageScrollView];

}

これらの2行を削除します

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[[self navigationItem] setRightBarButtonItem:button animated:YES];

これを行う必要はありません。これは、そのボタンをオンrightBarButtonに設定していることを意味しますNavigationBarが、あなたの場合はそうしたくないと思います。

于 2012-10-03T13:21:27.550 に答える
0

imageviewフレームと同様に、myButtonのフレームをforループに設定します。

myButton.frame= CGRectMake(xOrigin, 0, self.myButton.frame.size.width, self.myButton.frame.size.height);
于 2012-10-03T12:55:23.547 に答える