自定义UIButton上的自动布局在某些设备上不起作用

部门B

我正在开发一个具有暂停按钮的应用程序,该按钮具有自动版式的大小。有时这会导致在drawRect中调用rect的正确大小,有时是{{0.0},{22,22}}(其他任何情况下)都只会导致很小的“暂停”按钮。

- (void)drawRect:(CGRect)rect
{
    NSLog(@"%@", NSStringFromCGRect(rect));
    // Everything here follows the size of the rect to draw
}

22px似乎是随机的,因为该值未出现在应用程序中的任何地方。它使我想起的唯一一件事是,我在drawRect内绘制的内容使用了10px的插入量(只需将x和y坐标,宽度和高度设置为UIButton上的其他值),因此42px-2 * 10px将为22px。

我在IB中设置了约束,如下所示:

接口构建器中应用的布局概述

以下仿真器(Xcode 5.1.1)/硬件设备起作用,因为它们为我提供了按比例缩放的输出,或者在输出为22px时不起作用:

  • iPhone iOS 6.1 22像素
  • iPhone Retina 3,5“ iOS7.1 47.5px
  • iPhone Retina 3,5“ iOS6.1 22px
  • iPhone Retina 4“ iOS6.1 22px
  • iPad Mini Retina iOS7.1 22像素
  • iPad 2 iOS 6.1 22像素
  • iPad 2 iOS 7.1 63像素

该按钮在IB中为42px。

可以的时候,这些是约束条件:

po ((UIView*)self.pauseButton).constraints
<__NSArrayM 0x972e160>(
<NSLayoutConstraint:0x979ca10 V:[PauseButton:0x979c6d0(63)]>,
<NSLayoutConstraint:0x979ca40 H:[PauseButton:0x979c6d0(63)]>,
<NSContentSizeLayoutConstraint:0x961f4a0 H:[PauseButton:0x979c6d0(30)] Hug:250 CompressionResistance:750>,
<NSContentSizeLayoutConstraint:0x961f5f0 V:[PauseButton:0x979c6d0(33)] Hug:250 CompressionResistance:750>

布局失败时的同一点(这通常会引发真正的怪异错误):

po [self.pauseButton constraints]
<__NSArrayM 0x7f59920>(
<NSLayoutConstraint:0x7f6f980 V:[PauseButton:0x7f6f720(22)]>,
<NSLayoutConstraint:0x7f6f9c0 H:[PauseButton:0x7f6f720(22)]>,
<NSContentSizeLayoutConstraint:0x7f6f360 V:[PauseButton:0x7f6f720(22)] Hug:250 CompressionResistance:750>
)

po [[UIWindow keyWindow] _autolayoutTrace]两者都是相同的,类似于一个空的VC,其中您在Window上获得了AMBIGUOUS LAYOUT,并获得了两个LayoutGuide:

*<UIWindow:0x108f537f0> - AMBIGUOUS LAYOUT
|   *<UIView:0x109409850>
|   |   *<_UILayoutGuide:0x109409c10> - AMBIGUOUS LAYOUT
|   |   *<_UILayoutGuide:0x10940a540> - AMBIGUOUS LAYOUT

其余的都还可以。

我不知道神奇的22px约束来自何处,或者为什么它仅在某些情况下出现。

部门B

我只是通过以下步骤对其进行了修复:

  • 从Interface Builder完全删除PauseButton
  • 使用完全相同的设置再次添加
  • 从我正在测试的设备上删除该应用程序

现在最让我担心的部分是,当我没有从设备中删除应用程序时,即使我已经从IB中完全删除PauseButton来运行它,但在ViewController上仍然有IBOutlet时,它仍然会像这样显示22px约束还在那儿。

仅在再次添加它并从设备中删除该应用程序后,它才放弃了这些幻像约束。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

UIButton在某些设备上不起作用

为什么getDrawable()在某些Android设备上不起作用?

为什么getExternalFilesDirs()在某些设备上不起作用?

快速,单击时自定义UIButton不起作用

自定义进度可绘制在Android Lollipop(API 21)设备上不起作用

AVAudioSession在某些蓝牙设备上不起作用

自定义“套用刷新”在iOS上不起作用

WorkManager退避延迟在某些设备上不起作用

自定义字体在移动设备上不起作用

Expo-speech在某些iOS设备上不起作用

自定义UIButton背景颜色不起作用

Web音频在某些设备上不起作用(Panner音频)

自定义Cursor CSS在网页的某些部分上不起作用

创建自定义键盘布局不起作用

TextView setText在PreferenceFragment中的自定义布局上不起作用

UTF-8在某些Android设备上不起作用

UITableView自定义单元在iPad Storyboard上不起作用,但在iPhone上起作用

自定义条纹结帐按钮在移动设备上不起作用

自定义CSS光标在某些区域不起作用?

自定义键盘布局AltGr绑定在某些程序中不起作用

自动布局在iPhone 6设备上不起作用,但在模拟器上起作用

流星自动成型自定义验证不起作用

AngularJS在某些浏览器/设备上不起作用

CSS Flex布局在某些iPad上不起作用

Laravel:某些字段的自定义验证不起作用

自定义 UIButton - IBAction 不起作用

自定义 UIView 类中的 UIButton 不起作用

agora 云录制自定义布局不起作用

CameraX:setTargetResolution() 在某些设备上不起作用