0

ここに画像の説明を入力してください

上の画像のようにUITextFieldをカスタム化する必要があるため、カスタムクラスextendUITextFieldクラスを作成してみます。しかし、私の問題は次のとおりです。rectの影の輪郭をストロークし、カスタムコード内のテキストフィールドに白い背景を設定します。

- (void)drawRect:(CGRect)rect
 {
  // Drawing code
     self.autocorrectionType = UITextAutocorrectionTypeNo;
     self.autocapitalizationType = UITextAutocapitalizationTypeNone;
     CALayer *layer = self.layer;
     layer.cornerRadius = 15.0;
     layer.masksToBounds = YES;
     layer.borderWidth = 1.0;
     layer.borderColor = [[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor];
     [layer setShadowColor: [[UIColor blackColor] CGColor]];
     [layer setShadowOpacity:1];
     [layer setShadowOffset: CGSizeMake(2.0, 2.0)];
     [self setClipsToBounds:NO];
     [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
     [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
 }
  - (CGRect)textRectForBounds:(CGRect)bounds {
          return CGRectMake(bounds.origin.x + 20, bounds.origin.y + 8,
                  bounds.size.width - 40, bounds.size.height - 16);
 }
 - (CGRect)editingRectForBounds:(CGRect)bounds {
          return [self textRectForBounds:bounds];
 }

だから私の質問は:私が欠けているコード(ここでは内側に白い背景を設定し、境界線にアウトラインシャドウを設定します)あなたの助けに感謝します!

4

3 に答える 3

2

これを最初に試しましたか?
self.textField.background = myUIImage;
self.textField.borderStyle = UITextBorderStyleNone;

于 2012-12-07T04:08:00.030 に答える
0

テキストフィールドボックスの画像を使用し、カスタムに設定されているため透明な通常のUITextFieldの後ろに配置します。そうすれば、テキストフィールド機能を利用でき、その背後にあらゆる種類のグラフィックを配置できます。

于 2012-12-07T04:04:22.527 に答える
0

最後に、いくつかのチュートリアルを読んだ後、問題を解決しました。これが私が書いたコードです。

- (void)drawRect:(CGRect)rect
{

     self.autocorrectionType = UITextAutocorrectionTypeNo;
     self.autocapitalizationType = UITextAutocapitalizationTypeNone;
     CALayer *layer = self.layer;
     layer.backgroundColor = [[UIColor whiteColor] CGColor];
     layer.cornerRadius = 15.0;
     layer.masksToBounds = YES;
     layer.borderWidth = 1.0;
     layer.borderColor = [[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor];
     [layer setShadowColor: [[UIColor blackColor] CGColor]];
     [layer setShadowOpacity:1];
     [layer setShadowOffset: CGSizeMake(0, 2.0)];
     [layer setShadowRadius:5];
     [self setClipsToBounds:NO];
     [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
     [self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
  }
  - (CGRect)textRectForBounds:(CGRect)bounds {
        return CGRectMake(bounds.origin.x + 20, bounds.origin.y + 8,
                  bounds.size.width - 40, bounds.size.height - 16);
   }
  - (CGRect)editingRectForBounds:(CGRect)bounds {
        return [self textRectForBounds:bounds];
   }
于 2012-12-07T04:22:00.227 に答える