iOS 7分割图像中的UISegmentedControl在动画过程中出错

iOS 7分割图像中的UISegmentedControl在动画过程中出错,第1张

概述我有一个定制的UISegmentedControl.在iOS 6和以下它工作正常.在iOS 7 ..它看起来很好,直到我按下控件,在那个时候,分隔图像看起来很奇怪的一秒钟. 这是我的代码: UIImage *segmentSelected = [[UIImage imageNamed:@"segcontrol_sel.png"] re 我有一个定制的UISegmentedControl.在iOS 6和以下它工作正常.在iOS 7 ..它看起来很好,直到我按下控件,在那个时候,分隔图像看起来很奇怪的一秒钟.

这是我的代码:

UIImage *segmentSelected = [[UIImage imagenamed:@"segcontrol_sel.png"]                                resizableImageWithCAPInsets:UIEdgeInsetsMake(6,6,6)];    UIImage *segmentUnselected = [[UIImage imagenamed:@"segcontrol_unsel.png"]                                  resizableImageWithCAPInsets:UIEdgeInsetsMake(6,6)];    UIImage *segmentSelectedUnselected =    [UIImage imagenamed:@"segcontrol_sel_uns.png"];    UIImage *segUnselectedSelected =    [UIImage imagenamed:@"segcontrol_uns_sel.png"];    [[UISegmentedControl appearance] setBackgroundImage:segmentUnselected                                               forState:UIControlStatenormal barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setBackgroundImage:segmentSelected                                               forState:UIControlStateSelected barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setBackgroundImage:segmentUnselected                                               forState:UIControlStateHighlighted barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setdivIDerImage:segUnselectedSelected                                 forleftSegmentState:UIControlStatenormal // | UIControlStateHighlighted                                   rightSegmentState:UIControlStateSelected                                          barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setdivIDerImage:segUnselectedSelected                                 forleftSegmentState:UIControlStateHighlighted                                   rightSegmentState:UIControlStateSelected                                          barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setdivIDerImage:segmentSelectedUnselected                                 forleftSegmentState:UIControlStateSelected                                   rightSegmentState:UIControlStatenormal //| UIControlStateHighlighted)                                          barMetrics:UIbarMetricsDefault];    [[UISegmentedControl appearance] setdivIDerImage:segmentSelectedUnselected                                 forleftSegmentState:UIControlStateSelected                                   rightSegmentState:UIControlStateHighlighted                                          barMetrics:UIbarMetricsDefault];    UIFont *Font = [UIFont systemFontOfSize:16.0f];    UIcolor *textcolor = [UIcolor darkGraycolor];    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:                                Font,@"NSFontAttributename",textcolor,@"NSForegroundcolorAttributename",nil];    [[UISegmentedControl appearance] setTitleTextAttributes:attributes                                                   forState:UIControlStatenormal];

任何想法,当我按下UISegmentedControl可能会导致分隔线显示错误发生什么?
谢谢?

解决方法 我以类似于user2128193描述的方式解决了这个问题,而不是为值更改事件添加一个目标,我将UISegmentedControl子类化并添加了这两个方法:
- (voID)sendActionsForControlEvents:(UIControlEvents)controlEvents{    [super sendActionsForControlEvents:controlEvents];    if (controlEvents & UIControlEventValueChanged) {        [self removeAnimationsRecursivelyForVIEw:self];    }}- (voID)removeAnimationsRecursivelyForVIEw:(UIVIEw *)vIEw{    [vIEw.layer removeAllAnimations];    for (UIVIEw *subvIEw in [vIEw subvIEws]) {        [self removeAnimationsRecursivelyForVIEw:subvIEw];    }}

显然,这仍然不是一个完美的解决方案,因为它依赖于UISegmentedControl的内部,但至少它会使你的代码变得更加清洁.

总结

以上是内存溢出为你收集整理的iOS 7分割图像中的UISegmentedControl在动画过程中出错全部内容,希望文章能够帮你解决iOS 7分割图像中的UISegmentedControl在动画过程中出错所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1112654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存