많은 관련 질문이 있지만이 내용과 완전히 일치하지는 않습니다.UIView 내부에서 UIImageView를 회전시키는 이상한 동작
내 앱에는 콘텐츠보기와 광고 배너보기가 있습니다.
사용자가 장치를 회전 할 때마다
,- (void) layoutSubviews
은 콘텐츠 뷰에 불려갑니다.
내 콘텐츠보기는 하나의 이미지로 구성됩니다. 이 이미지를 장치와 함께 회전 시키길 원합니다 (텍스쳐가있는 배경이므로 물리적 장치가 세로인지 가로인지에 따라 90 ° 또는 0 °로 회전하고 싶습니다.)
다음 코드는 다음과 같습니다.
//
// 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
지금은. 만 그것을 회전보다는 이미지를 부수되어 작동 layoutSubviews
무시하지 않고.
하지만 두 번째 기능에 넣을 때 엉망이 간다. 여기
는 출력 대표로부터의 로그 시뮬레이터에 남아있는 장치를 정중하게 회전시킵니다.
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}
나는 무슨 일이 일어나고 있는지 알고 싶습니다. 누구든지 약간의 빛을 비추 수 있습니까?