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

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

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

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

Swift

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

Q&A

解決済

2回答

1535閲覧

sHorizo​​ntal Stack Viewで均等に並べられない

bws

総合スコア98

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/03/15 10:49

編集2019/03/18 05:33

FoodTrackerのチュートリアルでつまずいてしまったのでアドバイスお願いします。

https://developer.apple.com/library/archive/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ImplementingACustomControl.html#//apple_ref/doc/uid/TP40015214-CH19-SW1

環境

xcode 9.4.1

困っていること

以下のように☆を均等に並べたいのですが画像のようになっていまいます。
イメージ説明

イメージ説明

コード

// RatingControl.swift import UIKit @IBDesignable class RatingControl: UIStackView { //MARK: Properties private var ratingButtons = [UIButton]() var rating = 0 @IBInspectable var starSize: CGSize = CGSize(width: 44.0, height: 44.0) { didSet { setupButtons() } } @IBInspectable var starCount: Int = 5 { didSet { setupButtons() } } //MARK: Initialization(初期化) override init(frame: CGRect) { super.init(frame: frame) setupButtons() } required init(coder: NSCoder) { super.init(coder: coder) setupButtons() } //MARK: Private Methods private func setupButtons() { for button in ratingButtons { removeArrangedSubview(button) button.removeFromSuperview() } ratingButtons.removeAll() //ボタン画像読み込み let bundle = Bundle(for: type(of: self)) let filledStar = UIImage(named: "filledStar", in: bundle, compatibleWith: self.traitCollection) let emptyStar = UIImage(named:"emptyStar", in: bundle, compatibleWith: self.traitCollection) let highlightedStar = UIImage(named:"highlightedStar", in: bundle, compatibleWith: self.traitCollection) for _ in 0..<5 { // ボタン作成 let button = UIButton() button.setImage(emptyStar, for: .normal) button.setImage(filledStar, for: .selected) button.setImage(highlightedStar, for: .highlighted) button.setImage(highlightedStar, for: [.highlighted, .selected]) // 自動生成された制約を削除 button.translatesAutoresizingMaskIntoConstraints = false // 大きさを指定 button.heightAnchor.constraint(equalToConstant: starSize.height).isActive = true button.widthAnchor.constraint(equalToConstant: starSize.width).isActive = true // ボタンアクションを設定 button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(button:)), for: .touchUpInside) // Add the button to the stack addArrangedSubview(button) // Add the new button to the rating button array ratingButtons.append(button) } } //MARK: Button Action @objc func ratingButtonTapped(button: UIButton) { print("Button pressed ????") } }

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

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

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

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

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

guest

回答2

0

自己解決

Stack Viewを入れ子にしたらチュートリアルと同じ形になりました。

イメージ説明
イメージ説明

投稿2019/03/16 03:03

bws

総合スコア98

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

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

0

https://qiita.com/yucovin/items/ff58fcbd60ca81de77cb#fillequally
↑この辺いじってみてどうなります?

あれ? コードで書いてあるから↓これかな? おんなじだけど。
https://developer.apple.com/documentation/uikit/uistackview/distribution

投稿2019/03/15 10:55

編集2019/03/15 11:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

bws

2019/03/16 03:08

StackVeiwのAlignmentとDistributionを変更することでチュートリアルに似たように見せることはできたのですが、今回はStackViewを入れ子にしたところなぜかチュートリアル通りになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問