0

ビューのすべての UIlabels に行った CAlayer を適用する必要があります

ビューに 6 つの UIlabels があり、以下のコードのように CAlayer を実行し、このレイヤーをすべての UIlabels に適用したいと考えています。

CALayer *lay=[CALayer layer];
lay.borderWidth=2;
lay.borderColor=[UIColor darkGrayColor].CGColor;

[out_lat_min.layer addSublayer:lay]; 

out_lat_min と呼ばれる私の UIlabel の 1 つ

でもうまくいきません。サポートしていただけますか?

4

3 に答える 3

1

これが頻繁に使用するラベルの「スタイル」である場合、採用する最適なパターンは UILabel のカテゴリです。これは動作の変更ではないため、サブクラス化は正しい答えではありません。

UILabel+MyCompany.m

+ (UILabel *)borderedLabel {
   UILabel *label = [[UILabel alloc] init];
   [label.layer setBorderWidth:2.0f];
   [label.layer setBorderColor:[UIColor darkGrayColor].CGColor];
   return label;
}

次に、コード内で、このメソッドを使用して、この動作でラベルが必要な場所にラベルを作成します。たとえば、次のようになります。

UILabel *label1 = [UILabel borderedLabel];

ラベルの色や幅を変更するなど、他の必要がある場合は、引数を受け取るようにカテゴリ メソッドを変更します。

于 2013-09-30T00:05:37.853 に答える
0

CALayer を UIView に「適用」することはできません。各 UIView には独自のレイヤーがあります。その色を複数の UIViews のレイヤーに適用したい場合は、それを行うだけです。このような:

for (UIView* x in anArrayOfUIViews)
{
    x.layer.borderWidth = 2;
    x.layer.borderColor = [UIColor darkGrayColor].CGColor;
}

さらに、CALayer を複数の他のレイヤーのサブレイヤーにすることはできません。それがまさにその仕組みです。

于 2013-09-28T13:22:56.590 に答える