为 iPhone 5/6/6+ 的 UIButton 获取可变高度
Get variable height for a UIButton for iPhones 5/6/6+
对于我的 1) 仅肖像 2) 部署目标 iOS7/iOS8 应用程序,我在我的设计 UIButtons 中具有可变高度,iPhone 5,iPhone 6 和 iPhone 6+。我正在尝试为此使用自动布局。 (尽管不使用大小 类)。
如何使用自动布局为这 3 种屏幕尺寸指定 UIButton 的可变高度。这些按钮在 iPhones 5* 型号上看起来不错,但在 iphone 6/6+ 上看起来更薄。现在在自动布局中,我可以说高度 >= 或 = 或 <= 说 55),但是我如何为 iphone5 指定 44,为 iphone6 指定 55,为 iphone6 指定 66 +?
这是我可以仅使用自动布局来实现的东西,还是我需要在代码中对其进行操作(框架)?那我使用自动布局有什么意义呢?
除了框架,我的设计还指定了不同的字体大小。我该怎么做。 Stack-O 的朋友们有什么最有名的方法吗??
我通过向 UIButton 添加高度约束来实现这一点。创建一个 Outlet,您可以使用 _myConstraint.constant = 55;
在 UIViewController 子类中设置高度
你问得对"what is the point of auto-layout if I have to manipulate frames directly"?值得庆幸的是,您不必这样做。
一种简单的方法是指定相对于标准高度视图的高度(考虑适合整个屏幕的视图)。
例如,我们可以将按钮的高度设置为视图高度的一半。
这样,按钮将始终随着视图向上或向下(按大小)缩放。自动布局会保证它们之间的关系永远是1/2。
现在,无论大小如何,按钮的大小都是其父视图的一半。
听起来您需要修改高度限制常量值。
在您的 xib/storyboard 中,为您的 view/controller 创建一个高度限制的出口。
在运行时,可能在 viewDidLoad
中,您将计算出您使用的是哪个设备,然后只需更改高度约束的常量即可。
CGFloat height;
// if iPhone 5
// height = 44
// else..........
self.buttonHeightConstraint.constant = height;
这将自动触发一个标志,告诉 AutoLayout 重新计算帧并再次布局视图。
对于我的 1) 仅肖像 2) 部署目标 iOS7/iOS8 应用程序,我在我的设计 UIButtons 中具有可变高度,iPhone 5,iPhone 6 和 iPhone 6+。我正在尝试为此使用自动布局。 (尽管不使用大小 类)。
如何使用自动布局为这 3 种屏幕尺寸指定 UIButton 的可变高度。这些按钮在 iPhones 5* 型号上看起来不错,但在 iphone 6/6+ 上看起来更薄。现在在自动布局中,我可以说高度 >= 或 = 或 <= 说 55),但是我如何为 iphone5 指定 44,为 iphone6 指定 55,为 iphone6 指定 66 +?
这是我可以仅使用自动布局来实现的东西,还是我需要在代码中对其进行操作(框架)?那我使用自动布局有什么意义呢?
除了框架,我的设计还指定了不同的字体大小。我该怎么做。 Stack-O 的朋友们有什么最有名的方法吗??
我通过向 UIButton 添加高度约束来实现这一点。创建一个 Outlet,您可以使用 _myConstraint.constant = 55;
在 UIViewController 子类中设置高度你问得对"what is the point of auto-layout if I have to manipulate frames directly"?值得庆幸的是,您不必这样做。
一种简单的方法是指定相对于标准高度视图的高度(考虑适合整个屏幕的视图)。
例如,我们可以将按钮的高度设置为视图高度的一半。
这样,按钮将始终随着视图向上或向下(按大小)缩放。自动布局会保证它们之间的关系永远是1/2。
现在,无论大小如何,按钮的大小都是其父视图的一半。
听起来您需要修改高度限制常量值。
在您的 xib/storyboard 中,为您的 view/controller 创建一个高度限制的出口。
在运行时,可能在 viewDidLoad
中,您将计算出您使用的是哪个设备,然后只需更改高度约束的常量即可。
CGFloat height;
// if iPhone 5
// height = 44
// else..........
self.buttonHeightConstraint.constant = height;
这将自动触发一个标志,告诉 AutoLayout 重新计算帧并再次布局视图。