故事板UIButton的代码等效

时间:2013-01-24 18:01:37

标签: ios objective-c xml uibutton uistoryboard

我在故事板上设置了一些自定义按钮,我试图在代码中重新创建,但不管怎么说,尽管在我的CGRectMake函数中使用相同的参数,我仍然没有获得正确的位置。另一个问题是自动调整掩码不能在代码中工作,因为我有左,右和右支柱突出显示,因此按钮在3.5“和4”屏幕大小都保持位置,但是我通过代码创建的按钮没有做这个。我从我的故事板发布XML,然后是我的代码,以显示我的意思。在代码之前,我正在尝试做一些上下文。我在我的项目中通过故事板设置了多个控制器/视图中的这些自定义按钮。我正在尝试使用控制器中的按钮以编程方式创建一个单独的控制器,然后让我的其他控制器从此继承,以防万一需要进行修改,这些只需要进行一次。

这是我的代码:

这是故事板中的XML:

<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="iz0-cT-TPO">
                            <rect key="frame" x="0.0" y="357" width="106" height="60"/>
                            <autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                            <state key="normal" image="Anotpressed.png">
                                <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
                                <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
                            </state>
                            <state key="highlighted" image="Apressed.png">
                                <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                            </state>

                        </button>

我的视图控制器中的等效代码是:

(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    UIButton *AButton=[UIButton buttonWithType:UIButtonTypeCustom];
    [AButton setFrame:CGRectMake(0, 357, 106, 60)];
    [AButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
    [AButton setImage:[UIImage imageNamed:@"Anotpressed"] forState:UIControlStateNormal];
    [AButton setImage:[UIImage imageNamed:@"Apressed"] forState:UIControlStateHighlighted];
    [AButton setEnabled:YES];
    [self.view addSubview:AButton];
}

目前我正在做的是将故事板按钮保留在原位,然后使用程序按钮从视图控制器继承,以查看它们是否相同,我发现我的程序按钮远高于故事板按钮即使它们具有相同的坐标等。

我为这个问题的详细程度道歉,但我想提供一份我正在努力实现的全貌。首先,如何以编程方式重新创建相同的按钮,其次是(继承/子类化)在我的项目中重新创建这些按钮的正确方法?

1 个答案:

答案 0 :(得分:2)

flexibleMinY表示如果父视图调整大小,则可以重新定位故事板中的视图。可能发生的情况是视图以特定大小加载,但调整大小以适应可用的屏幕空间。例如,如果故事板是针对iPhone 4屏幕尺寸设计的,则会显示在新的iPhone 5屏幕分辨率上。

由于您在viewDidAppear中添加了按钮,因此调整大小已经发生。按钮向下移动了一点,不再处于原始位置。

您可以尝试在viewDidLoad中添加按钮,这可能是在显示和调整原始视图大小之前调用的。同时为您的按钮添加相同的autoresizingMask

或确保原始按钮的y位置固定而不是灵活。