7

IBにボタンを設定しました。IBOutlet をセットアップし、画面上のオブジェクトをリンクしています。ボタンの位置やサイズをプログラムで変更する方法はありますか? タイトルなどを変更できることは知っていますが、位置やサイズを変更する方法がわかりません。

ここに画像の説明を入力

それに応じて、その位置を変更したいと思います。出来ますか?はいの場合、次のコードでボタンの位置を変更しようとしていますが、ヘッダー ファイルでは機能しないため、その方法を教えてください。

@property (nonatomic, strong) IBOutlet UIButton *mybuttonOutlet;

実装ファイル内:

-(void)viewDidLoad {


    screenSizeHeight=[UIScreen mainScreen].bounds.size.height;


if(screenSizeHeight==568)

    mybuttonOutlet.frame= CGRect(38, 464 ,157,25);


if(screenSizeHeight==480)

    mybuttonOutlet.frame= CGRect(38, 364 ,157,25);

}
4

6 に答える 6

14

Use AutolayoutIB またはストーリーボードのボタンから削除します。

于 2013-05-06T19:57:21.423 に答える
4

Autolayout を有効にして位置を調整する場合は、次のようにコードを変更する必要があります

-(void)viewDidLayoutSubviews {

    screenSizeHeight=[UIScreen mainScreen].bounds.size.height;

    if(screenSizeHeight==568)
        mybuttonOutlet.frame= CGRect(38, 464 ,157,25);

    if(screenSizeHeight==480)
        mybuttonOutlet.frame= CGRect(38, 364 ,157,25);
}

基本的に、Autolayout が有効になっている場合は、viewDidLayoutSubviews メソッドでカスタム レイアウト調整を実行する必要があります。

于 2014-11-15T12:38:01.337 に答える
0
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end


#import "ViewController.h"

@interface ViewController ()
@property(nonatomic, strong) IBOutlet UIButton *theButton;


// -(IBAction)moveTheButton:(id)sender;

@end

@implementation ViewController
@synthesize theButton;

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

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(IBAction)moveTheButton:(id)sender{
    //set default position
    CGRect btFrame = theButton.frame;
    btFrame.origin.x = 145;
    btFrame.origin.y = 285;
    theButton.frame = btFrame;

    //position changing
    btFrame.origin.x += 40;
    theButton.frame = btFrame;

    //new size of button
    CGRect rect=CGRectMake(145, 285, 190, 30);
    [self.theButton setBounds:rect];

}

@end
于 2015-06-10T05:52:02.213 に答える
0

これについて私が考え出した解決策は、メイン ビュー内に新しいビュー オブジェクトを作成し、そのビュー内に「動的に変化するオブジェクト」を配置することです (図に示すように)。

オブジェクト階層

次に、Auto-Layout を使用して新しいビューをメイン ビューに配置します。しかし、新しいビュー内にある bugButton:UIButton は、期待どおりに位置を変更します:

bugButton.frame.origin = CGPoint(x: newX, y: newY)
于 2016-01-29T06:20:09.830 に答える