角丸ボタンのuibutton.frameについて

このQ&Aのポイント
  • UIButtonのuibutton.frameについて説明します。期待する動作としては、myLabelが落ちてmyButtonと衝突した後にmyButtonが少しくらい転がってほしいのですが、垂直に落ちて少し横に水平に微動するだけです。
  • 角丸ボタンの動きが思い通りにならない問題について解決方法を教えてください。myButtonのlayer.cornerRadiusを設定しても効果がないように見えます。
  • myButtonとmyLabelの間に隙間があり、myButtonが実質四角の形になっていてcornerRadiusが効いていないように見えます。丸型として扱う方法を教えてください。
回答を見る
  • ベストアンサー

角丸ボタンのuibutton.frameについて

UIButton(myButton)に対して「myButton.layer.cornerRadius = X」を設定し、角丸ボタンにしています。 さらにUILabel(myLabel)も用意して UIGravityBehavior(items: [myLabel]) UICollisionBehavior(items: [myLabel, myButton]) をaddBehaviorしていますが、角丸ボタンの動きが思い通りになりません。 期待する動作としては、myLabelが落ちてmyButtonと衝突した後にmyButtonが少しくらい 転がってほしいのですが、垂直に落ちて少し横に水平に微動するだけです。 画像を見てみると、myButtonとmyLabelの間が少し隙間があることからmyButtonが実質、四角の形になっていて、cornerRadiusが効いていないように思うのですが、 どのように丸型として扱えるでしょうか? ※ myLabelとmyButtonはinspectorエリアから貼り付けたもので、addSubviewしたものではありません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

UIDynamicAnimatorはお手軽ですが、角丸の衝突判定は今のところできないと思います。 こういうことをしたいなら、やはりSprite Kitを使う必要があると思います。 http://tnantoka.github.io/hello-spritekit/ja/ とかを参考にするとよいと思います。

MaiK_Birdy
質問者

お礼

ありがとうございます。 ぜひ参考にします。

関連するQ&A

  • Objective-c ボタンの動的配置

    ボタンを以下のように、動的に配置していますが、画像がぼやけて表示されてしまいます。 調べると、座標の指定が整数値でない場合、この問題が起こったりするようなのですが、 整数値にしても奇麗に表示されません。。 どなたか、お分かりになる方教えて下さい。 myButton = [UIButton buttonWithType:UIButtonTypeCustom]; UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:@"test.png"]]; [myButton setImage:myImage forState:UIControlStateNormal]; [myButton] setFrame:CGRectMake(100,100,200,200)]; [myButton addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside]; [scrollView addSubview:myButton ];

  • モニターの画面調整。

    こんばんは。 フリマで手に入れた液晶モニターなんですが、 メーカーはHYUDAIでしてかなり古いものです。 最近のモニターは横長ですがこれは15インチぐらいのテレビみたいでタテヨコ比も ほぼ四角に近い画面及び外形です。 おかしいのは ・ アイコンとか文字がにじんでいるように見える。ワードとかエクセルも同様で文字が にじんでいます。 ・ あとはPDFとかワード、エクセルで印刷プレビューを見るとどうみても縦長すぎる。 用紙の現寸に比べ縦方向が長すぎる。 モニターの下にボタンがあり、 MENU SERECT 電源ボタン VOLUME AUDIO と並んでいます。 SERECTボタンの下にはAUTOの印字があります。 MENU、SERECTを少し押してみましたが、にじみを解消するとかタテヨコ比を調整する などのメニューは無いようです。 水平垂直画面位置と言うメニューはありますがこれは違うようです。 なんとか解消したいのですが。 宜しくお願い致します。

  • objective-cで困っています教えてください

    objective-cをトライ&エラーで試しながら学習をしている初心者です。タッチした所を中心にまず100×100の正方形を表示し、その後スライダーで正方形の大きさを決めてから画像のトリミングをしたいのですが、正方形が表示されないのと、タッチした位置と切り取られる位置がずれています。上記の内容で行き詰っており、知恵をお借りしたいと思い投稿しました。宜しくお願いします。 ViewController.mの内容 #import "ViewController.h" @interface ViewController (){ // UILabel *label; // UIImageView *uv; //中心の位置 float v; // X座標 float x; // Y座標 float y; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //写真の表示 CGRect rect_uv = CGRectMake(0,20, 360, 360); UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect_uv]; //画像のアスペクト比を維持しUIImageViewサイズに収まるように表示 imageView.contentMode = UIViewContentModeScaleAspectFit; UIImage *image = [UIImage imageNamed:@"hoge.png"]; [imageView setImage:image]; [self.view addSubview:imageView]; // UISliderのインスタンス化 CGRect rect_sd = CGRectMake(50, 400, 200, 10); UISlider *slider = [[UISlider alloc]initWithFrame:rect_sd]; // スライダーの最小値,最大値,値を設定 slider.minimumValue = 0; slider.maximumValue = 500; slider.value = 100; // スライドしている最中に値を調べられるようにする.デフォルトでYESだがサンプルのため slider.continuous = YES; // スライダーの値が変更されたときに呼ばれるメソッドを設定 [slider addTarget:self action:@selector(slider_ValueChanged:) forControlEvents:UIControlEventValueChanged]; // スライダーをビューに追加 [self.view addSubview:slider]; // ラベルの設置 CGRect rect_lb = CGRectMake(300, 400, 100, 30); label = [[UILabel alloc]initWithFrame:rect_lb]; [self.view addSubview:label]; // 標準ボタン例文 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRectMake(50, 450, 100, 30); [btn setTitle:@"切り取り" forState:UIControlStateNormal]; [btn addTarget:self action:@selector(trim:) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:btn]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /** * スライダーの値が変更されたとき */ - (void)slider_ValueChanged:(id)sender { UISlider *slider = sender; // スライダーの値をログに記述 NSLog(@"スライダーの値:%f", slider.value); // ラベルのテキストを設定 //float v = slider.value; v = slider.value; label.text = [NSString stringWithFormat:@"%2.f",v]; //四角形を描画 CGContextRef context = UIGraphicsGetCurrentContext(); // コンテキストを取得 CGContextStrokeRect(context, CGRectMake(x,y,v,v)); // 四角形の描画 } /** * タッチされたとき */ - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.anyObjectメソッドでいずれか1つのタッチを取得 // 2.locationViewメソッドで対象となるビューのタッチした座標を取得 CGPoint p = [[touches anyObject] locationInView:self.view]; x = p.x; // X座標 y = p.y; // Y座標 NSLog(@"タップ開始 %f, %f", x, y); //四角形を描画 CGContextRef context = UIGraphicsGetCurrentContext(); // コンテキストを取得 CGContextStrokeRect(context, CGRectMake(x,y,100,100)); // 四角形の描画 } /** * 切り取りボタンが押されたとき呼ばれるtrimメソッド */ -(void)trim:(UIButton*)button{ // ここに何かの処理を記述する // (引数の button には呼び出し元のUIButtonオブジェクトが引き渡されてきます) // 切り抜き元となる画像を用意する。 //UIImage *srcImage = /* UIImagePickerなどから取得したUIImage */ UIImage *srcImage = [UIImage imageNamed:@"hoge.png"]; // 切り抜く位置を指定するCGRectを作成する。 CGRect trimArea = CGRectMake(x, y, v, v); // CoreGraphicsの機能を用いて、 // 切り抜いた画像を作成する。 CGImageRef srcImageRef = [srcImage CGImage]; CGImageRef trimmedImageRef = CGImageCreateWithImageInRect(srcImageRef, trimArea); UIImage *trimmedImage = [UIImage imageWithCGImage:trimmedImageRef]; // 画像表示例文 //UIImage *img = [UIImage imageNamed:@"hoge.png"]; UIImageView *iv = [[UIImageView alloc] initWithImage:trimmedImage]; [self.view addSubview:iv]; } @end

  • 角丸画像を使ってボタンを作りたい

    ホームページのボタンの背景として使う角丸の画像を作りました。 しかし、ボタンの画像を文字の長さに合わせて短くしたり長くしたりしたいのですが、角丸部分は拡大・縮小しないで、真ん中の部分だけ伸ばす(?)ということはCSSでどうやったらできますか? ちょうどMS Officeのホームページの各記事の下にある「この記事は役に立ちましたか?」に対する回答用ボタンが例になると思います。

    • ベストアンサー
    • CSS
  • JW-CADの操作方法を教えてください

    ずっとAUTOCADで仕事をしていましたが、仕事が変わって12月からJW-CADで仕事をしています。 3冊の本とネットでかなり使い方がわかったのですが、いくつか、特には4つ不自由なことがあり、質問しました。 クロックメニューは右3時中心点と9時線上の点を拾うのに使っています。移動や複写、範囲のボタンをよく押して操作をするのですが、3回に1回は「包絡」になるか「円」になってしまいます。包絡は今の仕事ではめったに使いません。操作の仕方が悪いのでしょうか。 次に、中心点をなかなか掴めません。結局あきらめて距離を測って複線で補助線を引いたりしています。線上の点や交点もしばしばずれて拾ってあとで直しています。 次に、線を引くときに何も操作をしないのに垂直のチェックがついたり外れたりして、基本的には垂直と水平を使いたいのに不便をしています。斜めの線はたまにしか描きません。どこかに設定するところがあるのですか。 最後に、ポリラインのようなものはJWには無いのですか?四角はバラバラの線で描かれて、ポリラインではないのですがハッチもバラバラです。 AUTOCADより便利なこともありますが、まだまだ使い方がよくわかりませんので、よろしくお願いします。

  • JW-CADについて

    ずっとAUTOCADで仕事をしていましたが、仕事が変わって12月からJW-CADで仕事をしています。 3冊の本とネットでかなり使い方がわかったのですが、いくつか、特には4つ不自由なことがあり、質問しました。 クロックメニューは右3時中心点と9時線上の点を拾うのに使っています。移動や複写、範囲のボタンをよく押して操作をするのですが、3回に1回は「包絡」になるか「円」になってしまいます。包絡は今の仕事ではめったに使いません。操作の仕方が悪いのでしょうか。 次に、中心点をなかなか掴めません。結局あきらめて距離を測って複線で補助線を引いたりしています。線上の点や交点もしばしばずれて拾ってあとで直しています。 次に、線を引くときに何も操作をしないのに垂直のチェックがついたり外れたりして、基本的には垂直と水平を使いたいのに不便をしています。斜めの線はたまにしか描きません。どこかに設定するところがあるのですか。 最後に、ポリラインのようなものはJWには無いのですか?四角はバラバラの線で描かれて、ポリラインではないのですがハッチもバラバラです。 AUTOCADより便利なこともありますが、まだまだ使い方がよくわかりませんので、よろしくお願いします

  • フレームの×ボタンを押しても閉じることが出来ない

    JAVAアプレットでプログラムを作成していまして、FileInputStreamで 取り込んだデータをフレームに表示させたんですが、表示させたフレーム のボタン(ウィンドウ右上の×ボタンなど)何を押しても終了できないんです。 それで色んな所で探していて、フレームを閉じる処理が見つかったので、 それを追加してみましたが、それもだめです。 これはどのようにすればよろしいのでしょうか? 下記にソースを記述しておきますので、悪い点がございましたら教えてください。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; class frame extends Frame implements WindowListener { Color bgcolor; Font font; Label lab_1,lab_2; frame() { super("title"); setLayout(null); bgcolor = new Color(240,248,255); setBackground(bgcolor); setForeground(Color.black); addWindowListener(this); font = new Font("Serif",Font.PLAIN,13); /* Labelを作成 */ lab_1 = new Label(); lab_2 = new Label(); lab_1.setFont(font); lab_1.setText("TEST1"); lab_1.setBounds(20,20,60,30); add (lab_1); lab_2.setFont(font); lab_2.setText("TEST2"); lab_2.setBounds(80,20,60,30); add (lab_2); } protected void processWindowEvent(WindowEvent endEvent) { System.exit(0); } }

    • ベストアンサー
    • Java
  • 複数フレームで「戻る」ボタンを押すと、1フレームしか戻らない

    お忙しいところ申し訳ありませんが、教えてください。 「複数フレームを同時に書き替える」まではわかったのですが、「戻る」ボタンを押すと、1フレームしかページがもどりません。3フレームに分けているのですが、3フレームが同時に「戻る」ことはjavascriptでできるのでしょうか?ちなみにスクリプトは function viewWin(p1,p2,p3){window.open(p1,"frame1");window.open(p2,"frame2");window.open(p3,"frame3");} です。 基本的な質問だと思うのですが、わからなくて困ってます。どなたか教えてください。よろしくお願いします。

  • 角丸って…

    英語での表現方法を教えてください。 四角はsquare、丸はCircle。ここまでは辞書で調べればすぐ出てくるのですが、角が丸い「角丸?」(いろんなドロー形ソフトで書くことが出来る、角に丸みをつけた四角)はどう表現したらいいのでしょう。 出来るだけシンプルでわかりやすい単語で教えてください。 お願いします。

  • 角丸四角形を描きたい

    Accessのレポートに角丸の四角形を描きたいのですが、可能でしょうか?また、可能であれば、その方法を教えてください。よろしくお願い致します。