タグ : Xcode

Xcodeで画像の回転を実装する

Xcodeで画像を回転させるためには、UIGestureRecognizerのひとつであるUIRotationGestureRecognizerを使用します。

viewDidLoadで、回転させたいUIViewにUIRotationGestureRecognizerを設定します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //rotation recognizer設定
    UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationView:)];
    [_imageView addGestureRecognizer:rotationGestureRecognizer];
}

ローテーションジェスチャーを行った場合に呼び出されるactionを@selectorで設定します。
今回はrotationViewという名前にしました。

-(void)rotationView:(UIRotationGestureRecognizer *)sender
{
    //回転角度を取得
    CGFloat angle;
    angle = [sender rotation];

    //アフィン変換を適用
    CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
    _imageView.transform = transform;
}

UIRotationGestureRecognizerで取得した角度を_imageViewに反映させます。

参考サイト
2011-09-26 [XCODE]ローテーションジェスチャーを簡単に実装する

iPhoneの画面サイズにあわせて複数のストーリーボードを使い分けたい

XcodeでiPhoneの開発を行っていると、iPhone4S以下とiPhone5以上とで

異なる画面サイズに対応する必要が出てきます。

(iPhone6、iPhone6 Plusについては改めて記事にします)

iPhone4Sの3.5インチとiPhone5以降の4インチの異なる画面サイズに

どう対応するかですが、それぞれの画面サイズ用のストーリーボードを

用意して、画面サイズにあわせて切り替えて表示させる方法を紹介します。

まず、メインの画面サイズを4インチとします。

ストーリーボードを新規作成します。

FileメニューからNew→Fileと進んで、「User Interface」を選択します。

「Storyboard」があるので、「Next」をクリック、適当な名前を付けて作成します。

例えば「Main_iPhone_3_5.storyboard」等と名前を付けます。

ストーリーボードを新規作成したら、AppDelegate.mの

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

内に以下のように記載します。

//画面サイズによってStoryboardを切り替える
UIStoryboard *storyboard;
NSString *storyBoardName;
    
//Windowsスクリーンのサイズを取得
CGRect screen = [[UIScreen mainScreen] bounds];
//縦の長さが480の場合、古いiPhoneだと判定
if (screen.size.height == 480) {
    storyBoardName = @"Main_iPhone_3_5";
} else {
    storyBoardName = @"Main";
}
//StoryBoardのインスタンス化
storyboard = [UIStoryboard storyboardWithName:storyBoardName bundle:nil];
//画面の生成
UIViewController *mainViewController = [storyboard instantiateInitialViewController];
//ルートウィンドウにひっつける
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = mainViewController;
[self.window makeKeyAndVisible];