UIImagePickerController、自定义 UIButton 和 AutoLayout

Posted

技术标签:

【中文标题】UIImagePickerController、自定义 UIButton 和 AutoLayout【英文标题】:UIImagePickerController, custom UIButton and AutoLayout 【发布时间】:2014-10-10 21:05:05 【问题描述】:

我正在尝试使用自动布局约束将自定义按钮放入 UIImagePickerController。

- (void)createTimerButtonFor:(UIImagePickerController*)picker

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"Timer" forState:UIControlStateNormal];
NSLayoutConstraint* constraint1 = [NSLayoutConstraint constraintWithItem:picker.view attribute:NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];

NSLayoutConstraint* constraint2 = [NSLayoutConstraint constraintWithItem:picker.view attribute:NSLayoutAttributeTop relatedBy: NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeTop multiplier:1 constant:0];

NSLayoutConstraint *heightConstraint =
[NSLayoutConstraint constraintWithItem:button
                             attribute:NSLayoutAttributeHeight
                             relatedBy:NSLayoutRelationEqual
                                toItem:nil
                             attribute:NSLayoutAttributeNotAnAttribute
                            multiplier:1.0
                              constant:100.0];
NSLayoutConstraint *widthConstraint =
[NSLayoutConstraint constraintWithItem:button
                             attribute:NSLayoutAttributeWidth
                             relatedBy:NSLayoutRelationEqual
                                toItem:nil
                             attribute:NSLayoutAttributeNotAnAttribute
                            multiplier:1.0
                              constant:100.0];


[picker.view addSubview:button];

[picker.view addConstraint:constraint1];
[picker.view addConstraint:constraint2];
[button addConstraint:heightConstraint];
[button addConstraint:widthConstraint];

甚至可以这样做吗?我做错了吗?

【问题讨论】:

您能解释一下您希望按钮的确切位置吗?它以什么方式不起作用(例如“按钮没有显示”或“按钮不在正确的位置”)?此外,在应用引用它们的约束之前,约束中涉及的视图必须位于视图层次结构中。你应该得到一个异常或至少一个日志输出。 【参考方案1】:

Dzior,我认为将按钮添加到选择器视图并让自动布局为您定位它会很困难。我想也许它没有完全使用自动布局。

我试图禁止它旋转,但在 ios 8 之前的所有技巧在 iOS 8 上都无法正常工作。

创建叠加视图并将按钮放入叠加视图会更容易,因为您可以完全控制叠加视图类。

【讨论】:

以上是关于UIImagePickerController、自定义 UIButton 和 AutoLayout的主要内容,如果未能解决你的问题,请参考以下文章

如何创建自定义的 UIImagePickerController 与全屏图像 ios

UIImagePickerController:位于默认控件之上的自定义相机覆盖?

UIImagePickerController 中的自定义裁剪大小

如何在 UIIMagePickerController 中设置自定义图像

你如何为 UIImagePickerController 的导航栏着色/自定义?

在 iPhone OS 3.0 下自定义 UIImagePickerController?