2017-02-08 2 views
0

Мне удалось получить маску для UIImageView из png, используя свойство .mask, но было интересно, существует ли какой-либо простой способ нарисовать границу вокруг маски.Добавить границу маски после маскировки UIImageView с свойством маски

Как это выглядит:

Image

Код (UICollectionViewCell):

lazy var maskingView: UIImageView = { 

    let view = UIImageView() 

    view.image = UIImage(named: "mask") 
    return view 
}() 

lazy var profilePictureContainerView: UIImageView = { 

    let containerView = UIImageView() 

    containerView.backgroundColor = .black 
    containerView.translatesAutoresizingMaskIntoConstraints = false 
    return containerView 
}() 

override func layoutSubviews() { 

    super.layoutSubviews() 
    maskingView.frame = profilePictureContainerView.bounds 
} 

override init(frame: CGRect) { 

    super.init(frame: frame)   
    profilePictureContainerView.mask = maskingView 
    setUpViews() 
} 

setUpViews() является функ просто выложив Collection View Cell и позиционирование profilePictureContainerView внутри Это.

То, что я хочу достичь

Положите границу, скажем, красный, вокруг черной формы (то есть, «внутреннее ребро» Маски в).

Любые идеи?

+1

Учитывая, что ваша форма довольно сложна и обычна, я бы сказал, что для этого нет простого способа. Самый простой способ сделать это - создать форму границы как отдельное изображение и наложить ее поверх вашего профиля profilePictureContainerView. Это все равно позволит вам изменить свой цвет с помощью свойства 'tintColor' на' UIImageView', просто не забудьте отметить изображение для рендеринга в качестве изображения шаблона в активах (https://krakendev.io/blog/4-xcode-asset-catalog -secrets-you-need-to-know) – Losiowaty

+0

@ Losiowaty: действительно думал о том, чтобы делать то, что вы сказали как обходной путь. Определенно быстро сделать, благодарю вас за то, что вы напомнили мне, чтобы пометить образ как шаблон (я уверен, что я бы забыл об этом). Работает отлично! – Herakleis

ответ

-1

Пробовал ли вы слой?

maskingView.layer.borderWidth = 1 // Or any width 
maskingView.layer.borderColor = UIColor.red.cgColor 
+0

Это даст прямоугольную рамку, вокруг вида. – Losiowaty

+0

@ Losiowaty точно, собирался ответить именно на это. – Herakleis

Смежные вопросы