2014-11-26 3 views
1

Я пытаюсь нарисовать «круговой/овал/эллипс» пользовательское UIView в прошивке (используя быстрый)Clickable площади прямоугольника с закругленными углами ИОС

Я рисую в UIView с помощью подкласса следующего

import Foundation 
import UIKit 

class CustomEllipse: UIView { 


    override func drawRect(rect: CGRect) 
    { 
    var ovalPath = UIBezierPath(ovalInRect: rect) 
    UIColor.grayColor().setFill() 
    ovalPath.fill() 
    } 

} 

Это дает результат, похожий на следующий

enter image description here

теперь мне нужно, чтобы определить активную область для этого «CustomEllipse».

Однако, когда я определяю UITapGestureRecognizer для «CustomElipse», черные углы, показанные выше, по умолчанию можно щелкнуть.

Есть ли способ сделать только серый эллипс, который можно кликать?

ответ

1

Вы можете настроить зону с интерактивным доступом, переопределив метод pointInside(_: withEvent:). По умолчанию эта область совпадает с bounds прямоугольником.

В этом случае вы можете использовать метод containsPoint() в UIBezierPath. например:

class CustomEllipse: UIView { 

    var ovalPath:UIBezierPath? 

    override func drawRect(rect: CGRect) { 
     ovalPath = UIBezierPath(ovalInRect: rect) 
     UIColor.grayColor().setFill() 
     ovalPath!.fill() 
    } 

    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 
     return ovalPath?.containsPoint(point) == true 
    } 
} 
Смежные вопросы