アプリケーションにNavigationControllerにリンクされた2つのViewControllerがあります。最初のNavigationControllerには、ボタン付きのビューとラベル付きのビューがあります。このビューは円形の回転メニューで、私のホームページを表します。ビューはtouchesMoved:でCGAffineTransformMakeRotation - QuartzCore(明らかに問題を引き起こしています)で回転できます。ナビゲーションバーを非表示にすると、ボタンが移動/歪んで表示される(回転後)
私はこのビューでNavigationBarを非表示にしたかったので、私はsetNavigationBarHidden使用:YESにViewWillAppearを。次に、のバーを表示するViewWillDisappear。
シミュレータでは、最初のViewControllerを回転させ、回転させてからボタンをクリックすると(2番目のViewControllerに移動)、Back(最初のViewControllerに戻る)をクリックするまで、 distorted!
- Iは[self.viewのsetBounds:[UIScreen mainScreen]境界] を追加することによって問題を解決しようとしました。 * [self.viewのsetFrame:[UIScreen mainScreen]境界]]; * のviewDidLoad方法又はでViweWillAppear、 問題が残ります。
- 私はViewWillAppearに0にNavigationBarアルファを設定しようと上の1に にそれを設定しViewWillDisappearと私はYES両方 オプションは、問題を解決できなかった= self.navigationController.navigationBar.translucentを試してみました。
- プログラムでビュー、ボタン、およびラベルの位置を設定しようとしました。 をに設定しました。ViewWillAppearで問題を解決できません。
- 私はアニメーションを疑って削除しましたが、問題に影響はありません。
初心者として、この問題を解決できません。お手伝いください!
ViewController.h(最初のViewController)
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface ViewController : UIViewController
@property (nonatomic, strong) IBOutlet UIView *aView;
@property (nonatomic, strong) IBOutlet UIView *bView;
@property (nonatomic, strong) IBOutlet UIButton *bimg1;
…
@property (strong, nonatomic) IBOutlet UILabel *label1;
…
-(void) rotateTo:(CGFloat)x andY:(CGFloat)y;
@end
ViewController.m
#import "ViewController.h"
@implementation ViewController
@synthesize aView = _aView;
…
@synthesize bimg1 = _bimg1;
…
@synthesize label1 = _label1;
…
static inline double toradians (double degrees) {
return degrees * M_PI/180;
}
-(void)viewDidLoad {
![enter image description here][1][super viewDidLoad];
//Set text font
[_label1 setFont:[UIFont fontWithName:@"Consolas" size:16]];
…
[self.view setBounds:[[UIScreen mainScreen]bounds]];
[self.view setFrame:[[UIScreen mainScreen]bounds]];
}
-(void)viewWillAppear:(BOOL)animated {
self.navigationController.navigationBar.hidden = YES;
printf("Aview x: %f | Aview y: %f \n",self.aView.frame.origin.x, self.aView.frame.origin.y);
printf("Aview width: %f | Aview height: %f \n",self.aView.frame.size.width, self.aView.frame.size.height);
}
-(void)viewWillDisappear:(BOOL)animated {
self.navigationController.navigationBar.hidden = NO;
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint LastTouchPoint = [touch locationInView:self.view];
CGFloat LasTouchx = LastTouchPoint.x;
CGFloat LasTouchy = LastTouchPoint.y;
CGPoint CenterPoint = self.view.center;
CGFloat x = LasTouchx - CenterPoint.x;
[self rotateTo:x andY:y];
}
-(void) rotateTo:(CGFloat)x andY:(CGFloat)y {
CGFloat angle = x/y;
angle = atan(angle);
angle = angle * 360/M_PI;
angle *= 0.0174532925;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:1];
self.aView.transform=CGAffineTransformMakeRotation(-angle);
self.bView.transform=CGAffineTransformMakeRotation(-angle);
self.bimg1.transform=CGAffineTransformMakeRotation(angle);
self.bimg2.transform=CGAffineTransformMakeRotation(angle);
self.bimg3.transform=CGAffineTransformMakeRotation(angle);
self.bimg4.transform=CGAffineTransformMakeRotation(angle);
self.label1.transform=CGAffineTransformMakeRotation(angle);
self.label2.transform=CGAffineTransformMakeRotation(angle);
self.label3.transform=CGAffineTransformMakeRotation(angle);
self.label4.transform=CGAffineTransformMakeRotation(angle);
[UIView commitAnimations];
}
- (void)viewDidUnload
{
[self setBimg1:nil];
…
[self setAView:nil];
[self setBView:nil];
[super viewDidUnload];
}
最初のViewControllerから2番目のViewControllerへの変換中に、最初のビューが伸びていることがわかりました(明らかに、NavigationBarはビューを握っています)!それは絞られたままです!...どのようにこれを避けるためのアイデア?私が2番目のViewControllerに行き、最初に戻ってくるたびに、それはもっと絞られます。 –