0

当 aUILabel被按下时,我正在制作一个应该闪烁的“突出显示” UILabel(具有相同框架和按下位置的)。UILabel

目前,高亮标签闪烁,但未正确居中。这是代码:

-(void) flashRowViewController:(RowViewController*)rvc
{
    NSLog(@"row center: (%f, %f)", rvc.rowLabel.center.x, rvc.rowLabel.center.y);
    highlight.frame = rvc.rowLabel.frame;
//  highlight.center = rvc.rowLabel.center; // NSlog results are the same with or without this statement
    NSLog(@"highlight center: (%f, %f)", highlight.center.x, highlight.center.y);

    highlight.alpha = 1.0;

    [UIView animateWithDuration:1.00 
                     animations:^{
                         highlight.alpha = 0.0;
                     }];
}

我很困惑。也许我只是看这个太久了,需要一个外部的视角。下面是一个 NSLog 的例子:

2012-05-28 10:40:41.603 RREF[89755:f803] 行中心:(138.000000,40.000000)

2012-05-28 10:40:41.604 RREF[89755:f803] 高亮中心:(138.000000, 40.000000)

2012-05-28 10:40:43.538 RREF[89755:f803] 行中心:(138.000000,120.000000)

2012-05-28 10:40:43.538 RREF[89755:f803] 高亮中心:(138.000000, 120.000000)

2012-05-28 10:40:45.533 RREF[89755:f803] 行中心:(138.000000,200.000000)

2012-05-28 10:40:45.534 RREF[89755:f803] 高亮中心:(138.000000, 200.000000)

实际坐标是此输出中的当前坐标。突出显示标签只是没有移动到正确的位置!再次,它当前闪烁,只是没有居中。

4

3 回答 3

2

为什么不使用highlightedTextColor例如

label.highlightedTextColor = [UIColor redColor];

然后在您的触摸事件中:

[UIView animateWithDuration:1.0 
         animations:^(void) {
            label.highlighted = YES; 
         }
         completion:^(BOOL finished) {
                label.highlighted = NO; 
         }];
于 2012-05-28T15:16:48.423 回答
0

Haven't tried iTukker's solution yet but I got another good solution, which is animating the background color using [label.layer setBackgroundColor:(CGColor)]

-(void) flashRowViewController:(RowViewController*)rvc
{
    [rvc.rowLabel.layer setBackgroundColor:[highlightColor CGColor]];

    [UIView animateWithDuration:1.00 
                     animations:^{
                         [rvc.rowLabel.layer setBackgroundColor:[[UIColor clearColor] CGColor]];
                     }];
}
于 2012-05-28T15:24:45.080 回答
0

首先,您应该使用NSStringFromCGPoint功能打印出视图中心。

第二 - 你确定你只在这个地方改变框架吗?动画需要一秒钟,因此如果您在其他地方覆盖突出显示位置,即使日志正确,它也不会居中。您是否尝试在动画完成回调中记录位置?

第三 - 你确定这两个标签是以相同的方式创建的吗?文本对齐呢?字体大小呢?当您说“未正确居中”时,这是什么意思?

第四 - 您可以使用动画来更改第一个标签的颜色/背景,您不需要两个标签。

于 2012-05-28T15:34:37.623 回答