UILabel没有正确居中

时间:2012-05-28 14:45:46

标签: objective-c ios

当按下UILabel时,我正在制作一个“突出显示”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)

此输出中的实际坐标是当前的。高亮标签只是没有移动到正确的位置!同样,它目前闪烁,只是没有居中。

3 个答案:

答案 0 :(得分:2)

为什么不使用highlightedTextColor例如

label.highlightedTextColor = [UIColor redColor];

然后在你的触摸事件中:

[UIView animateWithDuration:1.0 
         animations:^(void) {
            label.highlighted = YES; 
         }
         completion:^(BOOL finished) {
                label.highlighted = NO; 
         }];

答案 1 :(得分:0)

还没有尝试过iTukker的解决方案,但我得到了另一个很好的解决方案,即使用[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]];
                     }];
}

答案 2 :(得分:0)

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

第二 - 你确定你只是在这个地方改变框架吗?动画需要一秒钟,所以如果你在其他地方写了高亮位置,即使日志正确也不会居中。您是否尝试在动画完成回调中记录位置?

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

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