UIButton的换位(UIButton Changing Position)

2019-09-02 02:52发布

我有一个按钮,在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);

}

Answer 1:

删除Use Autolayout从IB或故事板的按钮。



Answer 2:

如果你想调整启用了自动布局位置,你必须改变你这样的代码

-(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方法的任何自定义布局调整如果启用了自动布局



Answer 3:

#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


Answer 4:

我最终去了约束。 获取确定该按钮的位置的约束条件的出口(顶部,底部,导致,尾随)和改变约束(一个或多个)值(S)。

self.constBtnSubmitTrailing.constraint = 50.0

这使您可以保持启用自动版式。



Answer 5:

我想通了对此的解决方案是创建新的View对象主要查看里面,把我的“动态变化的对象”是视图内(如上图)。

对象层次

然后,我用自动布局定位在主视图中的新景观。 但bugButton:UIButton的是新的视图中,改变位置与预期:

bugButton.frame.origin = CGPoint(x: newX, y: newY)


Answer 6:

请执行此检查。

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

现在,如果你得到的日志“按钮NIL”,那么很可能你忘了你的IB按钮链接到您的变量mybuttonOutlet。



文章来源: UIButton Changing Position