Как установить определенный CGPoint в качестве центра UIImageView в Swift? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть особая CGPoint, которую я хотел бы, чтобы мой UIImageView имел в качестве центра.Я не уверен, как это сделать.Ниже моя попытка:

var firstDotView: UIView?
let dotSize: CGFloat = 20
@IBOutlet weak var imgPreViewOutlet: UIImageView!

override func viewDidLoad(){

    firstDotView = UIView.init()
    firstDotView?.frame = CGRect.init(x: 60, y: 60, width: dotSize, height: dotSize)
    firstDotView?.center = CGPoint.init(x: 60, y: 60)

    drawFirstDot()
    imgPreViewOutlet.addSubview(firstDotView!)

} 


// DRAW ROUND CIRCLE
func drawFirstDot() -> Void {
    let layer = CAShapeLayer.init()
    layer.path = UIBezierPath.init(roundedRect: firstDotView!.bounds, cornerRadius: 50).cgPath
    layer.fillColor = UIColor.blue.cgColor
    layer.backgroundColor = UIColor.yellow.cgColor
    firstDotView?.layer.addSublayer(layer)
}

Ответы [ 4 ]

0 голосов
/ 16 сентября 2018

если я не ошибаюсь, вы хотите добавить firstDotView где-нибудь в родительском представлении, а затем изменить центр imgPreViewOutlet, чтобы он совпадал с центром firstDotView.

сначала добавьте firstDotView в качестве дочернего представления в родительское представлениене для imgPreViewOutlet, затем установите центр imgPreViewOutlet равным firstDotView center

, замените

imgPreViewOutlet.addSubview(firstDotView!)

на

    view.addSubview(firstDotView!)
    imgPreViewOutlet.center = firstDotView!.centerde here
0 голосов
/ 16 сентября 2018

Вы можете сделать это так:

let dotSize = 20
let firstDotView = UIView()
firstDotView.frame = CGRect(x: 0, y: 0, width: dotSize, height: dotSize)
firstDotView.backgroundColor = UIColor.black
firstDotView.layer.cornerRadius = 10
firstDotView.center = imageView.center

view.addSubview(firstDotView)
0 голосов
/ 16 сентября 2018

Вы также можете использовать imageView.layer.position = CGPoint(x: 60, y: 60)

layer.position относительно anchorPoint, который по умолчанию является центром содержимого слоя.

0 голосов
/ 16 сентября 2018

Сделай так:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let firstDotView = UIView(frame: CGRect(x: imgPreViewOutlet.bounds.width/2 - dotSize/2,
                                            y: imgPreViewOutlet.bounds.height/2 - dotSize/2,
                                            width: dotSize,
                                            height: dotSize))
    firstDotView.layer.cornerRadius  = dotSize/2
    firstDotView.backgroundColor = UIColor.yellow
    firstDotView.translatesAutoresizingMaskIntoConstraints = false
    imgPreViewOutlet.addSubview(firstDotView)
}
...