UI機能の詳細については、ブロックブロッキングのiOSアプリケーションを試しています。現在、私は画面回転のためにそれを働かせようとする問題を持っています。UIImageViewの自動サイズ変更マスクが動作しない場合がある
ブロックを画面の回転後に正しく配置することができましたが、パドルの配置を変更するためのUIImageViewの取得に問題があります。
私のコードは次のように分割されています.VC呼び出しはBlockModelクラスのオブジェクトを初期化します。このオブジェクトはCGRectプロパティ(パドルのImageViewに対応するCGRect)を格納します。
VCは、パドル画像で初期化されたimageViewを作成し、画像ビューに自在プロパティを設定し(柔軟な外部マスクを使用)、modelオブジェクトのCGRectに基づいてフレームを設定し、imageViewをサブとして追加しますVCが処理しているメインビューのビュー。
コードは次のとおりです。
回転すると、ImageViewが自動的に再配置されていないことがわかります。
vCですべてのイメージビューとCGRect作成を行うと、それは動作します(コードサンプル2)。
これが期待どおりの動作ですか?はいの場合、CGRectが別のオブジェクトのプロパティから取得されていると、自動サイズ変更が実行されないのはなぜですか?
完全Xcodeのプロジェクトコードはhere(githubのリンク) は、私はプロパティとしてImageViewのを保存する場合は動作しないもののように見える
EDITです。私はそれにすばやくアクセスできるようにこれをやっていました。 imageViewがプロパティとして格納されていると、なぜ機能しないのですか?モデルが初期化され
コード
self.myModel = [[BlockerModel alloc] initWithScreenWidth:self.view.bounds.size.width andHeight:self.view.bounds.size.height];
モデルの初期化コード
-(instancetype) initWithScreenWidth:(CGFloat)width andHeight:(CGFloat)height
{
self = [super init];
if (self)
{
self.screenWidth = width;
self.screenHeight = height;
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
self.paddleRect = CGRectMake((self.screenWidth-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.screenHeight, paddleSize.width, paddleSize.height);
}
return self;
}
ImageViewのが初期化されているVCでのコード
self.paddleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"paddle"]];
self.paddleView.backgroundColor = [UIColor clearColor];
self.paddleView.opaque = NO;
self.paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
NSLog(@"Paddle rect is %@",NSStringFromCGRect(self.myModel.paddleRect));
[self.paddleView setFrame:self.myModel.paddleRect];
[self.view addSubview:self.paddleView];
私の代わりにImageViewのものが
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
CGRect paddleRect = CGRectMake((self.view.bounds.size.width-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.view.bounds.size.height, paddleSize.width, paddleSize.height);
UIImageView *paddleView = [[UIImageView alloc] initWithImage:paddleImage];
paddleView.backgroundColor = [UIColor clearColor];
paddleView.opaque = NO;
paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
[paddleView setFrame:paddleRect];
[self.view addSubview:paddleView];