asky

主にAndroidやiOSの開発について綴っています。また、使っている好きなアプリや全く関係のない話はDiaryで書いていきたいです。

Objective-C:UITextFieldとUITextViewのカスタムクラス

【環境】Xcode8.0

f:id:asky0113:20161015194642g:plain

規定では
UITextField:プレースホルダーあり
UITextView:プレースホルダーなし
という事で、
UITextViewに独自クラスを作ってプレースホルダーを実装しました。

さらにUITextFieldとUITextViewの見た目を統一するために
UITextFieldも独自クラスを作りました。

統一させたかった事

UITextFieldの独自クラスを作成

UITextFieldでは
枠線の幅・角丸・色を設定しています。
また、プレースホルダーの描画も設定しています。

プレースホルダーについては、
テキストのフォントサイズを17にしているので
同じくサイズを17にしています。

drawInRectで指定しているCGRectMake()では
Y座標はフォントサイズによって微調整が必要。



UITextViewの独自クラスを作成

UITextViewではUITextFieldと同じく
枠線の幅・角丸・色を設定しています。

あとは、入力したテキストの余白も設定しています。

プレースホルダーについては色々ごにょごにょとしています。

プレースホルダーについて参考にしたサイトはこちら
▼ UITextView で Placeholder を使う
UITextView で Placeholder を使う - xykのブログ

プレースホルダーもフォントサイズによって
CGRectMake()で位置を微調整しています。



Main.storyboardを編集

UITextFieldとUITextViewを各1つずつ設置

f:id:asky0113:20161015212939p:plain

ポイント
独自のVIewクラスを使う時は
各部品のCustom ClassのClassに作成したクラスを指定します。

  • TextFieldの場合
    f:id:asky0113:20161015213155p:plain

  • TextViewの場合
    f:id:asky0113:20161015213156p:plain

ViewControllerクラスを編集

ヘッダークラスは特に何もしていません。
メソッドクラスでは作成したクラス(UICustomTextField1とUICustomTextView1)を
インポートして実装しています。