我正在构建一个以横向和纵向模式显示图像的应用程序。旋转效果完美。图像也可以在横向模式下完美放置。但是,它将风景坐标保持为纵向,这会导致其放错位置。请在下面找到我的代码。你能让我知道我在想什么吗?是否还有一种方法可以从Xib文件严格实现这一目标?- (void)viewDidLoad{[super viewDidLoad];// Do any additional setup after loading the view.[[self navigationController] setNavigationBarHidden:YES animated:NO];UIImage *startImage = [UIImage imageNamed:@"title.png"];UIImageView *startImageView = [[UIImageView alloc] initWithImage:startImage];if (curOrientation == UIInterfaceOrientationPortrait || curOrientation == UIInterfaceOrientationPortraitUpsideDown) { [startImageView setFrame:CGRectMake(-128, 0, 1024, 1024)];}else{ [startImageView setFrame:CGRectMake(0, -128, 1024, 1024)];}[self.view addSubview:startImageView];} 最佳答案 当前,您仅在首次加载视图时才调用此代码。您实际上需要调用它每当视图出现在屏幕上时(以防设备在屏幕外旋转时)每当设备旋转时但是您应该将视图创建代码保留在viewDidLoad中,因为您只想创建一次。创建一个属性以保留指向视图的指针,以便您可以在代码中的所有这些位置引用它…@property (nonatomic, weak) UIImageView* startImageView;在viewDidLoad中创建它(但是不必担心几何形状,因为您可以在viewWillAppear中进行此操作):- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. [[self navigationController] setNavigationBarHidden:YES animated:NO]; UIImage *startImage = [UIImage imageNamed:@"title.png"]; UIImageView *startImageView = [[UIImageView alloc] initWithImage:startImage]; self.startImageView = startImageView; [self.view addSubview:startImageView];}制定通用的定位方法:- (void) orientStartImageView { UIInterfaceOrientation curOrientation = [UIApplication sharedApplication].statusBarOrientation; if (curOrientation == UIInterfaceOrientationPortrait || curOrientation == UIInterfaceOrientationPortraitUpsideDown) { [self.startImageView setFrame:CGRectMake(-128, 0, 1200, 1200)]; }else{ [self.startImageView setFrame:CGRectMake(0, -128, 1200, 1200)]; } }从viewWillAppear调用它(每次在屏幕上出现该视图时触发):- (void) viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self orientStartImageView];}从viewWillLayoutSubviews调用它(每次在屏幕上显示视图并旋转设备时触发):- (void)viewWillLayoutSubviews{ [super viewWillLayoutSubviews]; [self orientStartImageView];}顺便说一句,我不确定您的帧是否正确-在纵向模式下,您将左边缘移到屏幕外,在横向模式下,您将上边缘移到屏幕外。那是你要的吗?可能是您可以在Interface Builder中实现所需的功能,但是从代码中不清楚它是什么-也许您可以发布图片。还要检查是否已禁用“自动布局”(Interface Builder的文件检查器中的复选框)以简化问题。更新您也许可以不用任何代码就可以通过Xib进行此操作:将imageView置于其superView中,将其尺寸设置为最终尺寸(例如1200x1200),禁用自动布局,取消选择所有弹簧和支柱,适当地设置您的查看模式(例如或center)关于ios - UIImageView旋转但未正确重新定位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14926488/
10-11 14:42