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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

329閲覧

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

wakebear

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2018/02/21 15:58

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

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

Swift

1textField1.layer.borderColor = UIColor.gray.cgColor 2textField1.layer.borderWidth = 0.5 3textField1.layer.cornerRadius = 10.0 4textField1.layer.masksToBounds = true 5 6textField2.layer.borderColor = UIColor.gray.cgColor 7textField2.layer.borderWidth = 0.5 8textField2.layer.cornerRadius = 10.0 9textField2.layer.masksToBounds = true 10

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

swift

1let myView = UIView() 2let textField = UITextField() 3let label = UILabel() 4 5//定義 6let params: [(view: UIView, borderColor: UIColor, borderWidth: CGFloat, cornerRadius: CGFloat, masksToBounds: Bool)] = [ 7 (myView, .gray, 0.5, 5.0, true), 8 (textField, .orange, 1.0, 10.0, true), 9 (label, .green, 2.0, 20.0, false), 10 ] 11 12//適用 13params.forEach { 14 $0.view.layer.borderColor = $0.borderColor.cgColor 15 $0.view.layer.borderWidth = $0.borderWidth 16 $0.view.layer.cornerRadius = $0.cornerRadius 17 $0.view.layer.masksToBounds = $0.masksToBounds 18}

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

投稿2018/02/22 01:03

編集2018/02/22 01:05
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

Swift

1class Styler { 2 static func style( 3 textField: UITextField, 4 textColor: UIColor = .red, 5 backgroundColor: UIColor = .blue, 6 borderColor: UIColor = .gray, 7 borderWidth: CGFloat = 0.5, 8 cornerRadius: CGFloat = 10.0, 9 tintColor: UIColor = .green, 10 textAlignment: NSTextAlignment = .left, 11 ) { 12 textField.textColor = textColor 13 textField.backgroundColor = backgroundColor 14 textField.layer.borderColor = borderColor.cgColor 15 textField.layer.borderWidth = borderWidth 16 textField.layer.cornerRadius = cornerRadius 17 textField.tintColor = tintColor 18 textField.textAlignment = textAlignment 19 } 20}

投稿2018/02/21 23:40

nakasho_dev

総合スコア2655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakebear

2018/03/10 10:50

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

0

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

swift

1let textFieldArray = [textField1, textField2, textField3, .....] 2for textField in textFieldArray { 3 textField.layer.borderColor = UIColor.gray.cgColor 4 textField.layer.borderWidth = 0.5 5 textField.layer.cornerRadius = 10.0 6 textField.layer.masksToBounds = true 7}

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

投稿2018/02/21 23:39

midomurasaki

総合スコア46

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問