2

我在故事板上设置了一些自定义按钮,我试图在代码中重新创建它们,但不知何故,尽管在我的 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];
}

目前我正在做的是将情节提要按钮留在原处,然后从带有编程按钮的视图控制器继承,以查看它们是否相同,我发现我的编程按钮甚至比情节提要按钮高得多尽管它们具有相同的坐标等。

对于这个问题的冗长,我深表歉意,但我想提供一个完整的图片来说明我正在努力实现的目标。首先,如何以编程方式重新创建相同的按钮,其次,这是(继承/子类化)在我的项目中重新创建这些按钮的正确方法吗?

4

1 回答 1

2

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

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

您可以尝试在 中添加按钮viewDidLoad,这可能在显示和调整原始视图大小之前被调用。还将相同的内容添加autoresizingMask到您的按钮中。

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

于 2013-01-24T18:19:01.527 回答