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 中设置自定义图像