0
多くの関連する質問がありますが、これはまったく一致しません。UIView内でUIImageViewを回転させる不思議な動作
私のアプリにはコンテンツビューと広告バナービューがあります。
ユーザーがデバイスを回転させるたびに、
- (void) layoutSubviews
は、コンテンツビューに呼び出されます。
私のコンテンツビューは、1つのイメージで構成されています。この画像をデバイスと一緒に回転させたい(物理的な背景なので、物理的なデバイスが縦長か横長かに応じて90°または0°に回転させたい)
コードは次のとおりです。それだけで画像を潰しではなく、それを回転さ
それが動作layoutSubviews
上書きせずに今すぐ
//
// ContentView.m
// ChordWheel2
//
// Created by Pi on 16/08/2011.
// Copyright 2011 Pi. All rights reserved.
//
#import "ContentView.h"
#import "Helper.h"
@implementation ContentView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.autoresizesSubviews = YES;
{
// background -- want to cache, so imageNamed is the right method
UIImage* backgroundImage = [UIImage imageNamed: @"background2.png"];
background = [[[UIImageView alloc] initWithFrame: frame] autorelease];
background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
//background.autoresizingMask =
[background setImage: backgroundImage];
[self addSubview: background];
}
}
return self;
}
- (void) layoutSubviews
{
UIDeviceOrientation O = [UIDevice currentDevice].orientation;
BOOL is_L = UIInterfaceOrientationIsLandscape(O);
float theta = is_L ? M_HALF_PI : 0;
LOG(@"T = %@", NSStringFromCGAffineTransform(background.transform)) ;
LOG(@"C = %@", NSStringFromCGPoint(background.center));
background.transform = CGAffineTransformMakeRotation(theta);
}
@end
。。
しかし、私はそれがめちゃくちゃになる第二の機能に置く。
ここでは、出力されます代表からのログシミュレータ上に残っているデバイスを静かに回転させる。
T = [1, 0, 0, 1, 0, 0] C = {160, 240}
T = [1, 0, 0, 1, 0, 0] C = {240, 160}
T = [0, 1, -1, 0, 0, 0] C = {160, 240}
T = [1, 0, -0, 1, 0, 0] C = {240, 160}
T = [0, 1, -1, 0, 0, 0] C = {320, 80}
T = [1, 0, -0, 1, 0, 0] C = {400, 0}
T = [0, 1, -1, 0, 0, 0] C = {320, 80}
T = [1, 0, -0, 1, 0, 0] C = {400, 0}
T = [0, 1, -1, 0, 0, 0] C = {320, 80}
T = [1, 0, -0, 1, 0, 0] C = {480, -80}
T = [0, 1, -1, 0, 0, 0] C = {400, 0}
T = [1, 0, -0, 1, 0, 0] C = {640, -80}
T = [0, 1, -1, 0, 0, 0] C = {560, 0}
T = [1, 0, -0, 1, 0, 0] C = {800, -80}
T = [0, 1, -1, 0, 0, 0] C = {720, 0}
T = [1, 0, -0, 1, 0, 0] C = {960, -80}
T = [0, 1, -1, 0, 0, 0] C = {880, 0}
変換を実行すると、正しく中心点が報告されます。
T = [1, 0, 0, 1, 0, 0] C = {160, 240}
T = [1, 0, 0, 1, 0, 0] C = {240, 160}
T = [1, 0, 0, 1, 0, 0] C = {160, 240}
T = [1, 0, 0, 1, 0, 0] C = {240, 160}
T = [1, 0, 0, 1, 0, 0] C = {160, 240}
T = [1, 0, 0, 1, 0, 0] C = {240, 160}
私は何が起こっているのか理解したいと思います。誰か光を当てることはできますか?