我在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);
}
答案 0 :(得分:14)
从IB或情节提要中的按钮中删除Use Autolayout
。
答案 1 :(得分:3)
如果您想在启用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方法中执行任何自定义布局调整
答案 2 :(得分:0)
请执行此检查。
-(void)viewDidLoad{
if(self.mybuttonOutlet==nil)NSLog(@"Button is NIL");
}
现在,如果你得到“Button is NIL”的日志,那么你可能忘记将你的IB按钮链接到你的变量mybuttonOutlet。
答案 3 :(得分: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
答案 4 :(得分:0)
我最终选择了约束。获取确定按钮位置(顶部,底部,前导,尾随)的约束出口并更改约束(s)值。
self.constBtnSubmitTrailing.constraint = 50.0
这样您就可以启用AutoLayout。
答案 5 :(得分:0)
我想到的解决方案是在主视图中创建新的View对象,并将我的“动态变化对象”放在该视图中(如图所示)。
然后我使用自动布局将新视图定位在主视图中。 但是bugButton:UIButton位于新视图中,按预期更改位置:
bugButton.frame.origin = CGPoint(x: newX, y: newY)