質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.12%

重複するプロパティの記述をまとめたい

解決済

回答 3

投稿

  • 評価
  • クリップ 2
  • VIEW 426

wakebear

score 15

いつも皆さまありがとうございます。
質問させて下さい!
Xcode9.2 Swift4を利用しています。

現在作成しているアプリにて以下のようなプロパティを複数記述しています。
作成したテキストフィールドごとに、色やサイズ、丸みなどを設定しています。

textField1.layer.borderColor = UIColor.gray.cgColor
textField1.layer.borderWidth = 0.5
textField1.layer.cornerRadius = 10.0
textField1.layer.masksToBounds = true

textField2.layer.borderColor = UIColor.gray.cgColor
textField2.layer.borderWidth = 0.5
textField2.layer.cornerRadius = 10.0
textField2.layer.masksToBounds = true

このような記述が、一つのクラス内で約8回。他のVC内のクラスでも複数回記述しています。
上記のような内容を一つにまとめるような手段はありますでしょうか?

処理をまとめるということをまだしておらず、思い浮かぶ手段がなく四苦八苦しております。。。
ググりもしましたが、検索方法が悪いため良策を見つけれておりません。

何か手段があれば教えて頂けますでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

以下のようにStaticなfunctionを作成しておきUITextFiled,UIButton,などの要素に応じてよく使われる初期値を指定しておくと便利だと思います。
差分のあるところだけ引数を変更すれば差分が適用されるはずです。

class Styler {
    static func style(
        textField: UITextField,
        textColor: UIColor = .red,
        backgroundColor: UIColor = .blue,
        borderColor: UIColor = .gray,
        borderWidth: CGFloat = 0.5,
        cornerRadius: CGFloat = 10.0,
        tintColor: UIColor = .green,
        textAlignment: NSTextAlignment = .left,
    ) {
        textField.textColor = textColor
        textField.backgroundColor = backgroundColor
        textField.layer.borderColor = borderColor.cgColor
        textField.layer.borderWidth = borderWidth
        textField.layer.cornerRadius = cornerRadius
        textField.tintColor = tintColor
        textField.textAlignment = textAlignment
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/10 19:50

    ありがとうございます!!

    キャンセル

0

設定するパラメーターがみんな一緒であれば

let textFieldArray = [textField1, textField2, textField3, .....]
for textField in textFieldArray {
    textField.layer.borderColor = UIColor.gray.cgColor
    textField.layer.borderWidth = 0.5
    textField.layer.cornerRadius = 10.0
    textField.layer.masksToBounds = true
}


こんな感じでちょっとは楽できそうですが、
textFieldArray = [textField1, textField2, textField3, .....]
ここもうまいこと自動化できたらいいですね。私も知りたいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

let myView = UIView()
let textField = UITextField()
let label = UILabel()

//定義
let params: [(view: UIView, borderColor: UIColor, borderWidth: CGFloat, cornerRadius: CGFloat, masksToBounds: Bool)] = [
    (myView, .gray, 0.5, 5.0, true),
    (textField, .orange, 1.0, 10.0, true),
    (label, .green, 2.0, 20.0, false),
    ]

//適用
params.forEach {
    $0.view.layer.borderColor = $0.borderColor.cgColor
    $0.view.layer.borderWidth = $0.borderWidth
    $0.view.layer.cornerRadius = $0.cornerRadius
    $0.view.layer.masksToBounds = $0.masksToBounds
}

タプル使ってますが構造体にした方が良いかもしれません。(構造体よく知らないので‥)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る