ios ipad鎖屏 如何圍繞自己的中心旋轉子視圖?




ipad鎖屏 (2)

是否可以圍繞自己的中心旋轉視圖?

在我目前的實現中,子視圖(按鈕等)似乎在它們最終位於所需位置之前沿著有趣的路徑移動(因為超視圖的坐標係被旋轉)。 我希望這些視圖在自己的中心周圍旋轉90度,如下圖所示。


我真的很喜歡這個問題。 我還發現一些接口的旋轉動畫會震動。 這是我如何實現你所描繪的。 一個簡單的@interface會很好。 注意:我正在使用ARC。

#import <UIKit/UIKit.h>
@interface ControllerWithRotatingButtons : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *buttonA;
@property (strong, nonatomic) IBOutlet UIButton *buttonB;
@property (strong, nonatomic) IBOutlet UIButton *buttonC;
@end

.xib的按鈕進行適當的插座連接:

ControllerWithRotatingButtons.m:

#import "ControllerWithRotatingButtons.h"
@implementation ControllerWithRotatingButtons
@synthesize buttonA = _buttonA;
@synthesize buttonB = _buttonB;
@synthesize buttonC = _buttonC;
-(void)deviceRotated:(NSNotification *)note{
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    CGFloat rotationAngle = 0;
    if (orientation == UIDeviceOrientationPortraitUpsideDown) rotationAngle = M_PI;
    else if (orientation == UIDeviceOrientationLandscapeLeft) rotationAngle = M_PI_2;
    else if (orientation == UIDeviceOrientationLandscapeRight) rotationAngle = -M_PI_2;
    [UIView animateWithDuration:0.5 animations:^{
        _buttonA.transform = CGAffineTransformMakeRotation(rotationAngle);
        _buttonB.transform = CGAffineTransformMakeRotation(rotationAngle);
        _buttonC.transform = CGAffineTransformMakeRotation(rotationAngle);
    } completion:nil];
}
-(void)viewDidLoad{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceRotated:) name:UIDeviceOrientationDidChangeNotification object:nil];
}
-(void)viewDidUnload{
    [super viewDidUnload];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end

就是這樣。 現在,當您旋轉設備時,屏幕將不會旋轉,但按鈕將如下所示:

當然,如果您只想轉動按鈕的標籤,則只需將轉換應用於_buttonA.titleLabel

注意:請注意,一旦設備旋轉到任何不在按鈕上的觸摸,設備仍處於縱向狀態,但您對我的評論的回复似乎表明這對您來說不是問題。

如果您有相關問題,請隨時發表評論。


您可以使用transform屬性手動旋轉任何UIView子類。

#import <QuartzCore/QuartzCore.h>

myView.transform = CGAffineTransformMakeRotation(M_PI/2);




autorotate