質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

1600閲覧

iOSにて静的なカスタムクラスはうまく行くのに、動的な生成では画像が表示されない

hakase

総合スコア107

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2015/10/07 13:34

こんにちは!
ZoomImageViewというクラスを作りました。
指の操作で画像の拡大縮小移動ができます。
UIViewを継承して作ってあります。
ストーリーボードで静的にUIViewを設置して
Custom ClassとしてZoomImageViewを指定した場合には
画像が表示されるのですが、
動的にZoomImageViewを作成した場合には、表示されません。
動的に生成した場合に画像が表示される方法はないでしょうか?

Objective

1 2#import "ViewController.h" 3 4@interface ViewController () 5 6@end 7 8@implementation ViewController 9 10- (void)viewDidLoad 11{ 12 [super viewDidLoad]; 13 // Do any additional setup after loading the view, typically from a nib. 14 15 ZoomImageView *iv=[[ZoomImageView alloc] initWithFrame:CGRectMake(0,0,320,250)]; 16 [iv setImage:[UIImage imageNamed:@"ic_launcher-web"]]; 17 [_iv2 setImage:[UIImage imageNamed:@"ic_launcher-web"]]; 18} 19 20#import "ZoomImageView.h" 21 22@interface ZoomImageView ()<UIGestureRecognizerDelegate> 23 24@property(nonatomic, strong) UIImageView *imageView; 25@property(nonatomic, assign) float scale; 26@property(nonatomic, assign) BOOL isChange; 27@property(nonatomic, assign) CGAffineTransform defaultTransform; 28 29@end 30 31 32@implementation ZoomImageView 33 34-(id)init{ 35 self = [super init]; 36 if ( self ) { 37 [self initialization]; 38 } 39 40 return self; 41} 42 43- (id)initWithFrame:(CGRect)frame 44{ 45 self = [super initWithFrame:frame]; 46 if (self) { 47 // Initialization code 48 [self initialization]; 49 } 50 return self; 51} 52 53-(id)initWithCoder:(NSCoder *)aDecoder 54{ 55 self = [super initWithCoder:aDecoder]; 56 if (self) { 57 // Initialization code 58 [self initialization]; 59 } 60 return self; 61} 62 63// 初期化 64-(void)initialization 65{ 66 // 拡大縮小 67 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(zoomImage:)]; 68 pinch.delegate = self; 69 [self addGestureRecognizer:pinch]; 70 71 // 移動 72 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveImage:)]; 73 [self addGestureRecognizer:pan]; 74 75 // 画像を設定 76 _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 77 [_imageView setContentMode:UIViewContentModeScaleAspectFit]; 78 [self setClipsToBounds:YES]; 79 [self addSubview:_imageView]; 80 81 // 初期設定 82 _isChange = false; 83 _scale = 1.0f; 84} 85 86// 画像設定 87-(void)setImage:(UIImage*)image 88{ 89 [_imageView setImage:image]; 90} 91 92// 拡大 93- (void)zoomImage:(UIGestureRecognizer*)sender { 94 if (!_isChange && sender.state == UIGestureRecognizerStateBegan) { 95 _isChange = true; 96 _defaultTransform = _imageView.transform; 97 } 98 else if (_isChange && sender.state == UIGestureRecognizerStateEnded) { 99 _isChange = false; 100 _scale = 1.0f; 101 return; 102 } 103 104 if( sender.state == UIGestureRecognizerStateEnded ) { 105 return; 106 } 107 108 _scale = ((UIPinchGestureRecognizer*)sender).scale; 109 CGAffineTransform transform = CGAffineTransformConcat( CGAffineTransformConcat(_defaultTransform, CGAffineTransformMakeRotation(0)), 110 CGAffineTransformMakeScale(_scale, _scale)); 111 _imageView.transform = transform; 112} 113 114// 移動 115- (void)moveImage:(UIPanGestureRecognizer *)sender { 116 // 座標計算 117 CGPoint translation = [sender translationInView:[_imageView superview]]; 118 CGPoint movedPoint = CGPointMake(_imageView.center.x + translation.x, _imageView.center.y + translation.y); 119 // 移動 120 [_imageView setCenter:movedPoint]; 121 [sender setTranslation:CGPointZero inView:_imageView]; 122} 123 124@end 125

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

[self.view addSubview:iv];
が抜けていました。お騒がせしました。

投稿2015/10/07 14:03

hakase

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問