こちらを参考にしてUISegmentControlのデザインを変更しようと、
このように書いたところ、エラーが出てしまいました。
エラーのFixを押すと今度は黄色で下記のようなエラーが表示され
最終的に下記のようになり、実機で確認しても文字色が白に変わりません。
原因も解決方法もわからず困っております。
どうぞよろしくお願いいたします。
//UISegmentControlの見た目
@IBAction func Segment(_ sender: UISegmentedControl) {
self.Segment.tintColor = UIColor.clear
self.Segment.backgroundColor = UIColor(red: 255/255, green: 49/255, blue: 81/255, alpha: 1)
let attribute = [kCTForegroundColorAttributeName:UIColor.white]
self.Segment.setTitleTextAttributes(attribute, for: .normal)
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
黄色の警告からの想像ですが、つくってあげたattributeをどこかでつかってあげてますか?
↓の3行目に該当する部分。
let attribute = [kCTForegroundColorAttributeName:UIColor.white]
// ↓この記述がないんじゃない?
Outlet接続したセグメンテッドコントロール.setTitleTextAttributes(attribute, forState: .Normal)
見落としていたので追記します。
SegmentedControlの初期プロパティの設定を変更するのでしたら、
違う場所、ViewControllerのviewDidLoadとかライフサイクル的に適切な場所に書いてあげてください。
ティントカラーとかだから、ここでいいのかな?
貼り付けてほしいコード
↓これを貼るとどんなエラーが出ますか? 色が変わらないだけで、エラーは出ないと思いますが。
タイプミスがあったらごめんなさい。
@IBAction func Segment(_ sender: UISegmentedControl) {
self.Segment.tintColor = UIColor.clear
self.Segment.backgroundColor = UIColor(red: 255/255, green: 49/255, blue: 81/255, alpha: 1)
let attribute = [kCTForegroundColorAttributeName:UIColor.white]
self.setTitleTextAttributes(attribute, for: .normal)
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/08/26 01:46
教えていただいたコードを入力しても同じエラーが出てしまいました。
2018/08/26 02:08
早速入力してみましたが、エラーが出てしまいました。
エラー内容は以下のようになりました。
'Normal' is unavailable: use [] to construct an empty option set
'setTitleTextAttributes(_:forState:)' has been renamed to 'setTitleTextAttributes(_:for:)'
Replace 'setTitleTextAttributes(attribute, forState' with 'setTitleTextAttributes(attribute, for'
2018/08/26 02:12
.
2018/08/26 02:15
Value of type 'ListViewController' has no member 'setTitleTextAttributes'
2018/08/26 02:19
self.setTitleTextAttributes(attribute, for:.normal)
↓
self.Segment.setTitleTextAttributes(attribute, for: .normal)
2018/08/26 02:25
もしよければどこが原因でどう解決されたのか教えていただけないでしょうか。
2018/08/26 02:27 編集
編集済みのViewConntorller?をアップしていただけると説明する手間がだいぶ楽になるので質問文を編集して追加していただけないでしょうか?
2018/08/26 02:33
2018/08/26 02:34
2018/08/26 02:39
2018/08/26 02:39
あと、今確認したところ文字色が白くなっていなかったのですが、私の認識では
let attribute = [kCTForegroundColorAttributeName:UIColor.white]
↑これで文字が白くなると思っていたのですが…違うのでしょうか?
2018/08/26 02:42
↓
let attribute = [NSAttributedStringKey.foregroundColor:UIColor.white]
2018/08/26 02:45
2018/08/26 02:51
self.Segment.tintColor = UIColor.clear self.Segment.backgroundColor = UIColor(red: 255/255, green: 49/255, blue: 81/255, alpha: 1)
let attribute = [NSAttributedStringKey.foregroundColor:UIColor.white]
self.Segment.setTitleTextAttributes(attribute, for: .normal)
を追加して最初から色がつくようにしたのですが、この方法で大丈夫でしょうか?
2018/08/26 02:57
問題点をサクッと指摘できなくてすいませんでした。
2018/08/26 02:59 編集
2018/08/26 03:05