2

私はiPhone開発の初心者で、練習用に簡単なアプリをやっています。そのアプリには、画像が表示されているビューが 1 つだけあります。左または右にスワイプして、最初の画像をビューから外し、2 番目の画像を表示できるようにしたいと考えています。画像は異なり、それらがつながっているように見せたいです。一連のスワイプの後に画像を変更したり再起動したりできるようにする必要があります。ScrollView のみを使用してこれを行っています。

これはコードです:

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>
{
    UIImageView *imgView;
    UIScrollView *scrollView;
}

@property (nonatomic,retain)IBOutlet UIImageView *imgView;
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

//- (id)initWithPageNumber:(int)page;

@end

viewcontroller.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize imgView,scrollView;

- (void)viewDidLoad
{
    NSArray *images = [[NSArray alloc] initWithObjects:@"1.jpeg",@"2.jpeg",@"3.jpeg", nil];
    for (int i = 0; i < images.count; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        imgView = [images objectAtIndex:i];
        imgView.frame = frame;
        [scrollView addSubview:imgView];
    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * images.count, self.scrollView.frame.size.height);

    [super viewDidLoad];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.scrollView = nil;
}



@end

まだ画像をスクロールできません。私のエラーがどこにあるかわからないのですか?さらに、次の例外が表示されます。

例外:

[__NSCFConstantString setFrame:]: unrecognized selector sent to instance 0x49b8
2012-10-24 16:49:42.411 SwipeImages[3330:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString setFrame:]: unrecognized selector sent to instance 0x49b8'
*** First throw call stack:
(0x1c8d012 0x10cae7e 0x1d184bd 0x1c7cbbc 0x1c7c94e 0x2718 0xf3817 0xf3882 0x42a25 0x42dbf 0x42f55 0x4bf67 0x213b 0xf7b7 0xfda7 0x10fab 0x22315 0x2324b 0x14cf8 0x1be8df9 0x1be8ad0 0x1c02bf5 0x1c02962 0x1c33bb6 0x1c32f44 0x1c32e1b 0x107da 0x1265c 0x1d7d 0x1ca5)
libc++abi.dylib: terminate called throwing an exception
4

2 に答える 2

1

文字列を配列に配置し、その中に画像オブジェクトを配置します。すなわち

NSArray *images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.jpeg"],[UIImage imageNamed:@"2.jpeg"],[UIImage imageNamed:@"3.jpeg"], nil];

ここにも提案があります。jpegの代わりにping画像を使用してください。あなたがそれをしたときに私に知らせてください。

編集:

他のものはここにあります

imgView = [images objectAtIndex:i];

画像をimageviewオブジェクトに渡します。これは、実際には画像オブジェクトになります。また、画像にはフレームプロパティがありません。これを行う

 imgView.image = [images objectAtIndex:i];
于 2012-10-24T09:00:06.163 に答える
0

Swift 2.2の場合...以下のコードを使用して、(imageViewの)画像をscrollView内でスクロールします...

scrollView は scrollView の IBOutlet です

 override func viewDidLoad() {
    super.viewDidLoad()

    scrollLeftOrRight()
    // Do any additional setup after loading the view.
}

func scrollLeftOrRight(){
    var i: CGFloat = 0

    for (i = 0 ;i < CGFloat(arrayOfImages.count) ;i++){

        //make frame for the image of imageView
        var frame = CGRect()
        frame.origin.x = self.scrollView.frame.size.width * i
        frame.origin.y = 0
        frame.size = self.scrollView.frame.size

        //make imageView then add imageView as the subView of scrollView
        let imageView = UIImageView(frame: frame)
        imageView.image = UIImage(named: arrayOfImages[Int(i)])
        imageView.contentMode = .ScaleAspectFit
        scrollView.addSubview(imageView)

        scrollView.pagingEnabled = true

}

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * CGFloat(arrayOfImages.count), self.scrollView.frame.size.height)

 }

scrollView.contentSize 行はより重要です...これを正しくしないと、スクロールビューのコンテンツ幅は「1つの」画像の幅になります...すべての画像をスクロールさせるために...

scrollView の幅に arrayImage の数を掛ける必要があります...そして高さは画像の高さになります bcoz 画像を垂直にスクロールする必要はありませんか?

于 2016-05-12T12:11:34.693 に答える