メソッドを介して画像を追加するaddSubview
と、メソッド呼び出しで画像を削除するまで画像が残るため、画像がスタックしていますremoveFromSuperview
。ただし、このプロセスをもう少し堅牢にしましょう。
まず、Storyboard ファイルで、UIImageView をビューにドラッグします。寸法はお好みで設定してください。次に、アシスタント エディター (右上にある小さなタキシード アイコン) を押すと、編集中のビュー コントローラーの対応するファイルが開きます。.h
ビューにあるUIImageViewを取得し、CTRLを押しながら.h
ファイルにドラッグし、次のような名前を付けますimageToDisplay
手を離すと、次のようなコードが.h
ファイルに
表示されるはずです。@property (weak, nonatamoic) IBOutlet UIImageView *imageToDisplay;
もう 1 つのプロパティ (今回は NSArray) を追加します。今回は Storyboard は必要ありません。
@property (strong, nonatomic) NSArray *imageArray;
.m
ファイルに戻り、メソッドでs のviewDidLoad
配列を作成しましょう。UIImage
UIImage *image1 = [UIImage imageNamed:@"image-1.png"];
UIImage *image2 = [UIImage imageNamed:@"image-2.png"];
UIImage *image3 = [UIImage imageNamed:@"image-3.png"];
UIImage *image4 = [UIImage imageNamed:@"image-4.png"];
UIImage *image5 = [UIImage imageNamed:@"image-5.png"];
_imageArray = @[image1, image2, image3, image4, image5];
配列に 5 つの画像があるので、配列からランダムに画像を選択し、それをUIImageView
ビューに接続されているプロパティに割り当てます。また、_imageToDisplay alpha
プロパティを 0.0 に等しくして、表示される画像とその表示方法をより詳しく理解できるようにしましょう。
//Still in viewDidLoad
_imageToDisplay.alpha = 0.0;
アニメーションなどの楽しいこともできます。これを簡単にする方法を作りましょう。
-(void)displayImageRandomlyOnView {
//First, let's pick a random image to display. We will do this by generating a random number based from the count of our imageArray
NSUInteger randomIndex = arc4random_uniform([_imageArray count]);
//Now let's pick the random image with the objectAtIndex method for NSArray's. We will assign this image to our _imageToDisplay's .image property.
_imageToDisplay.image = [_imageArray objectAtIndex:randomIndex];
//Now using your original code, we can randomly define the frame of our _imageToDisplay
int xValue = arc4random() % 320;
int yValue = arc4random() % 480;
_imageToDisplay.frame = CGRectMake(xValue, yValue, CGRectGetWidth(_imageToDisplay.frame), CGRectGetHeight(_imageToDisplay.frame));
//Now if you remember, our imageToDisplay 's value is still 0.0, so let's animate it to show our randomly chosen image and location.
[UIView animateWithDuration:1.0 animations:^ {
_imageToDisplay.alpha = 1.0;
}];
}
.h
これは、コードがファイルにどのように表示されるかです。
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageToDisplay;
@property (strong, nonatomic) NSArray *imageArray;
@end
.m
これは、すべてのコードがファイルにどのように表示されるかです。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *image1 = [UIImage imageNamed:@"image-1.png"];
UIImage *image2 = [UIImage imageNamed:@"image-2.png"];
UIImage *image3 = [UIImage imageNamed:@"image-3.png"];
UIImage *image4 = [UIImage imageNamed:@"image-4.png"];
UIImage *image5 = [UIImage imageNamed:@"image-5.png"];
_imageArray = @[image1, image2, image3, image4, image5];
_imageToDisplay.alpha = 0.0;
}
-(void)displayImageRandomlyOnView {
//First, let's pick a random image to display. We will do this by generating a random number based from the count of our imageArray
NSUInteger randomIndex = arc4random_uniform([_imageArray count]);
//Now let's pick the random image with the objectAtIndex method for NSArray's. We will assign this image to our _imageToDisplay's .image property.
_imageToDisplay.image = [_imageArray objectAtIndex:randomIndex];
//Now using your original code, we can randomly define the frame of our _imageToDisplay
int xValue = arc4random() % 320;
int yValue = arc4random() % 480;
_imageToDisplay.frame = CGRectMake(xValue, yValue, CGRectGetWidth(_imageToDisplay.frame), CGRectGetHeight(_imageToDisplay.frame));
//Now if you remember, our imageToDisplay 's value is still 0.0, so let's animate it to show our randomly chosen image and location.
[UIView animateWithDuration:1.0 animations:^ {
_imageToDisplay.alpha = 1.0;
}];
}
このメソッドを実行するたびに、ランダムに選択された画像とランダムな位置が表示されます。ランダムな値をいじって、画像がビューの境界内に留まるようにします。
さらに、課題として、このメソッドをUIButton
ビューに接続して、ボタンを押すたびに、作成したメソッド-(void)displayImageRandomlyOnView
が呼び出されて画像が変更されるようにしてください。
さらに説明が必要な場合はお知らせください。