UIBarButtonItem не в правильной форме - PullRequest
0 голосов
/ 03 марта 2019

Я хочу создать любимую кнопку в правом верхнем углу панели навигации.Я хочу использовать значок звезды, поэтому я создал UIButton и вставил его в UIBarButtonItem.Тем не менее, кнопка панели очень широка, даже если я вручную установил для нее размер.

Другая проблема заключается в том, что изображение, которое я здесь использовал, на самом деле - белая звезда от введения Apple в руководство по программированию для iOS.Тем не менее, он появился на экране в виде голубой звезды.Понятия не имею почему.

let button = UIButton(type: .system)
button.frame = CGRect(x: 0, y: 0, width: 34, height: 34)
button.setImage(UIImage(named: "filledStar"), for: .normal)
button.addTarget(self, action: #selector(bookmarkCourse(_:)), for: .touchUpInside)

let barButtonItem = UIBarButtonItem(customView: button)
navigationItem.rightBarButtonItem = barButtonItem

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Во-первых, настройте UIButton как пользовательскую кнопку:

let button = UIButton(type: .custom)

Во-вторых, ваш ресурс изображения, скорее всего, имеет слишком большой размер.Способ, которым я сделал бы это, должен загрузить измененные изображения согласно руководству от Apple.Затем можно также удалить строку кода, задающую размер кадра.

Размер значков панели навигации и панели инструментов Используйте следующие размеры для руководства при подготовке настраиваемых значков панели навигации и панели инструментов, но при необходимости измените их, чтобы создатьбаланс.

Размеры цели 72px × 72px (24pt × 24pt @ 3x) 48px × 48px (24pt × 24pt @ 2x) Максимальные размеры 84px × 84px (28pt × 28pt @ 3x) 56px × 56px (28pt × 28pt @)2x)

https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/custom-icons/

0 голосов
/ 03 марта 2019

Возможно, вы не захотите использовать UIBarButtonItem с пользовательским представлением.Просто передайте фактическое изображение при создании кнопки панели:

let image = UIImage(named: "filledStar")
UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(bookmarkCourse(_:))

Что касается цвета, то это из-за цвета оттенка элемента панели кнопок.По умолчанию это синий цвет, который вы видите.Также обратите внимание на то, как правильно масштабировать свои активы, согласно комментарию @ rbaldwin.

...