0

が押されると、点滅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)

実際の座標は、この出力の現在のものです。ハイライト ラベルが適切な場所に移動していません。繰り返しますが、現在点滅していますが、センタリングはありません。

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

まず、NSStringFromCGPoint関数を使用してビュー センターを出力する必要があります。

2 つ目 - この場所だけフレームを変更していてよろしいですか? アニメーションには1秒かかるので、ハイライト位置を別の場所に上書きすると、ログが正しくても中央に表示されません。アニメーション完了コールバックで位置を記録しようとしましたか?

3 つ目 - 2 つのラベルが同じ方法で作成されていますか? テキストの配置はどうですか?フォントサイズはどうですか?「自分自身を正しくセンタリングしていない」と言うとき、それはどういう意味ですか?

Forth - アニメーションを使用して、最初のラベルの色/背景を変更できます。2 つのラベルは必要ありません。

于 2012-05-28T15:34:37.623 に答える
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]];
                     }];
}
于 2012-05-28T15:24:45.080 に答える