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

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

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

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

Q&A

解決済

1回答

5389閲覧

swiftにて、グレーアウトする方法

swift_dev_1989

総合スコア24

Swift

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

0グッド

0クリップ

投稿2017/09/12 10:23

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
swiftにてアプリ開発をしています。
これまでAndroidしか経験がありません。
Tableviewを使用している画面でCellを無効にし
さらに、選べないとユーザにわかるようグレーアウトしたいのですが
どうすればよいでしょうか?

###発生している問題・エラーメッセージ
Cellの選択を無効にし、背景色と文字色をそれっぽい色に変更することを
考えましたが、Cellにはアイコンが設定されており
アイコンも白みがかったものをもうひとつ用意するのでしょうか?
UISwitchも表示させているので難しいです。

cell.setEnable = false
上記のような方法でグレーアウトさせる方法はないのでしょうか。

エラーメッセージ

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
swift3 Xcode8

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

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

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

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

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

guest

回答1

0

ベストアンサー

黒い半透明のUIViewをセル(contentView)の上に乗せてon/offすればいいと思います。


簡単にそれっぽく出来る方法を思い付いたので書いておきます。

やっていることは、

  • セルの背景をグレーにする。
  • contentViewを半透明にする。(上に乗っているViewも半透明になる)

です。

色やアルファを変えることで、ある程度はカスタマイズできると思います。

swift

1func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 3 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 4 5 //enable/disableフラグ(仮) 6 let enable = !(indexPath.row % 3 == 0) 7 8 if enable { 9 //enable 10 cell.backgroundColor = nil 11 cell.contentView.alpha = 1 12 } else { 13 //disable 14 cell.backgroundColor = .darkGray 15 cell.contentView.alpha = 0.5 16 } 17 18 return cell 19}

投稿2017/09/12 12:46

編集2017/09/13 01:29
fuzzball

総合スコア16731

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

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

swift_dev_1989

2017/09/13 00:14

ご回答ありがとうございます。 お手数なのですが、もう少し具体的にご教授いただけないでしょうか。 ①どのメソッド内で実施するのが良いのか。 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 上記内のcellを取得した後に、実施でしょうか? ②Viewの大きさはどのように定義すれば良いのか。 ③どうやって上に重ねるのか。 ほぼ全てですが、ご教授ください。 参考サイトでもかまいません。 何卒よろしくお願いいたします。
fuzzball

2017/09/13 00:35

カスタムセルではないのでしょうか? 2と3については、カスタムセルで解決すると思います。 1については、それで良いと思います。
fuzzball

2017/09/13 01:11

追記しましたので、面倒臭いことをする前に見てみて下さい。
swift_dev_1989

2017/09/13 01:35

fuzzball様 ご回答ありがとうございます。 完璧に期待通りにできました。 本当に助かりました。 もう1点申し訳ないのですが ボタンをグレーアウトさせたい場合は同じような手法になるのでしょうか。 button.setEnable = false のような方法はswiftではないのでしょうか。 (探した限りなさそうですが。。)
fuzzball

2017/09/13 01:47

UIButtonは isEnabled ですね。(親クラスのUIControlにあります)
swift_dev_1989

2017/09/13 02:18 編集

ご回答ありがとうございます。 isEnabled だと選択不可にはなりますが、グレーアウトにはならないですよね? Userからするとグレーアウトの方が、選択不可なことがわかって良いと思うのですが Swiftはそういうメソッド用意してくれてないのですね。。 皆様、不便に思ってないのでしょうか。。 本当にありがとうございました。 まだいくつかSwiftに関して調べてもわからないことがありまして また質問あげさせてもらうと思いますので 見かけて、わかる内容でしたらまた宜しくお願いいたします。
fuzzball

2017/09/13 02:38 編集

>>isEnabled だと選択不可にはなりますが、グレーアウトにはならないですよね? グレー化されますよ?(例えば素のUIButtonならテキストがグレーになる) 思っているような「グレー化」じゃないのであれば、set○○(_:for:) という関数群でカスタマイズできます。(setTitleColor(_:for:) など)
swift_dev_1989

2017/09/13 02:56

>グレー化されますよ?(例えば素のUIButtonならテキストがグレーになる) 私の手元ではならないのですが。。 何か変な設定をしているのかもしれません。。 とりあえずはisEnabledをするときにbackgroundColorと文字色を変更し 対処しました。 今回はこれでよかったですが、画像などが入っていた場合は困りますね。。 swift本当に慣れておらず難しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問