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 Autolayout从 IB 或情节提要中的按钮中删除。

于 2013-05-06T19:57:21.423 回答
4

如果要在启用自动布局的情况下调整位置,则必须像这样更改代码

-(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);
}

如果启用了自动布局,基本上你需要在 viewDidLayoutSubviews 方法中执行任何自定义布局调整

于 2014-11-15T12:38:01.337 回答
0

请执行此检查。

-(void)viewDidLoad{
    if(self.mybuttonOutlet==nil)NSLog(@"Button is NIL");
}

现在,如果您得到日志“Button is NIL”,那么您可能忘记将 IB 按钮链接到变量 mybuttonOutlet。

于 2014-11-15T14:40:44.497 回答
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

我想出的解决方案是在主视图中创建新的视图对象,并将我的“动态变化的对象”放在该视图中(如图所示)。

对象层次结构

然后我使用自动布局将新视图定位在主视图中。但是新视图中的 bugButton:UIButton 会按预期更改位置:

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

我最终选择了约束。获取确定按钮位置(顶部、底部、前导、尾随)的约束的出口并更改约束值。

self.constBtnSubmitTrailing.constraint = 50.0

这样您就可以保持启用自动布局。

于 2015-07-17T12:31:02.670 回答