2015-10-10 2 views
1

Я пытаюсь создать закругленный прямоугольник для UITableViewCell, который я создал в раскадровке. Я использую Swift 2 в Xcode 7. У меня есть два представления в ячейке прототипа, в представлении TopView и Bottom. Я хочу, чтобы topView имел свои верхние угловые раунды, а bottomView - с закругленными углами.Округленный прямоугольник с использованием UIRectCorner в Swift не работает

в awakeFromNib (может пойти куда-нибудь еще лучше позже):

... 
self.topView.backgroundColor = UIColor.redColor() 
self.bottomView.backgroundColor = UIColor.grayColor() 

self.setMaskToView(self.topView, corners:UIRectCorner.TopLeft.union(UIRectCorner.TopRight)) 
self.setMaskToView(self.bottomView, corners: UIRectCorner.BottomLeft.union(UIRectCorner.BottomRight)) 
... 

В отдельной функции (на основе ответа на другой перепускной пост Stack):

func setMaskToView(view : UIView, corners: UIRectCorner) { 
    let rounded = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: 10, height: 10)) 
    let mask = CAShapeLayer() 

    mask.path = rounded.CGPath 
    view.layer.mask = mask 
} 

Примечание, я также пытался [ .TopRight, .TopLeft] вместо union(), на основе различных сообщений о переполнении стека. Кажется, ничего ничего не изменит. Также очищен и перезапущен Xcode в отчаянии. Это то, что я получаю:

Top Cell Shows issue. Only .TopLeft seems to be applied, even though it is called on two separate views

Если у кого есть какие-либо идеи, что может быть, я был бы признателен.

Спасибо.

+0

увидеть мой ответ здесь: http://stackoverflow.com/a/40222533/2594699 –

ответ

2

У вас есть две проблемы.

  1. awakeFromNib слишком рано, чтобы сделать что-либо, основываясь на просмотре границ, потому что взгляды не были изменены для устройства в этой точке. Вы должны создать слои маски в awakeFromNib, но вы должны установить их пути в layoutSubviews.

  2. В setMaskToView(_:corners:) вам необходимо использовать view.bounds, а не self.bounds, чтобы создать путь.

+0

Да, я смотрел на это десятки раз, и не видел его. благодаря –

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