当状态从开/关变化时自定义UISwitch弹跳 - IOS-7 Bug?

问题描述 投票:3回答:3

我真的需要一些帮助,因为iOS 7我只有UISwitch的麻烦。

问题

在显示键盘并将其恢复到原始位置后向上移动视图后,我打开/关闭任何UISwitch它将正常工作,但它会在动画期间“反弹”。这似乎恰好发生在具有UISwitch属性的.thumbTintColor上。我的意思是当开关关闭时self.borders.thumbTintColor = [UIColor redColor];和开关打开时的self.borders.thumbTintColor = [UIColor greenColor];

为了清楚起见,一切都运行良好,直到移动视图(我不能这样做,因为你无法看到文本字段)。

我到处搜索(包括课程参考),我没有找到任何有用的东西,或其他任何有此问题的人。

UPDATE

我尝试过各种方式设置UISwitch thumTintColor,一切正常,直到我向上移动视图以补偿键盘。如果我在iPad上或通过模拟器慢慢地打开或关闭开关,“反弹”发生在中途,当颜色从绿色变为红色或红色变为绿色时,视状态而定,我认为这是一个实际的IOS7 UISwitch Bug。我真的不想在我的应用上使用第三部分开关插件,所以不知道现在该做什么,人们会认为改变拇指上的色调不会是一个如此大的问题。

我试过关闭动画从开启到关闭到开启没有任何区别。

我通过代码而不是IB创建了一个新的UISwitch,并且存在同样的问题。

创建了一个新的测试应用程序,只有一个开关和文本框进行测试,同样的事情发生。

问题

1)我的想法是这是一个真正的错误。我如何用苹果记录它(以前从未做过)所以如果有人能指出我到了正确的地方,我将不胜感激。

2)我现在正在考虑使用Buttons作为开关,但觉得这不是可行的方法,有没有任何实际的理由不这样做,即将应用程序提交到App Store等问题?

ios objective-c uiswitch
3个回答
1
投票

答案1:使用Apple登录错误可以通过iOS开发中心完成(页面底部有一个链接)。您也可以要求技术支持。单击“开发人员支持中心”按钮,然后转到“技术支持(TSI)”(请注意,在您必须购买更多产品之前,您每年只能使用有限的数量)。

答案2:我认为有两个按钮将是一个非常糟糕的用户界面决定。苹果可能因此拒绝它(但你永远不知道)。我会收到错误报告,并从那里开始。

祝好运!


1
投票

我有类似的问题,并找到了解决方案。它有点hacky但它​​完成了这项工作。只需要在将isOn属性设置为On / Off和更改拇指颜色之间添加一个小延迟。

switch.isOn = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  self.switch.thumbTintColor = .white
}

0
投票

我发现有趣的解决方案可能会有所帮助。

    NSArray *array = [self.mySwitch subviewsWithClass:[UIImageView class]];
    for (UIImageView *imageView in array) {
        imageView.image = [UIImage imageNamed:@"Untitled-1.png"];
    }

听说我使用了UIView类的方法

- (NSArray*)subviewsWithClass:(Class)class
{
    NSMutableArray *array = [NSMutableArray array];
    if ([self isKindOfClass:class]) {
        [array addObject:self];
    }
    for (UIView *subview in self.subviews) {
        [array addObjectsFromArray:[subview subviewsWithClass:class]];
    }
    return array;
}

图像大小为{57,53.5}。圆半径为15(带阴影)

我知道这不是一个很好的解决方法。但如果你真的需要帮助。

enter image description here

enter image description here

玩图像有点=)

© www.soinside.com 2019 - 2024. All rights reserved.