How to keep a round imageView round using auto layout?

后端 未结 15 1381
悲&欢浪女
悲&欢浪女 2020-12-01 06:22

How do I turn a rectangular image view into a circular image view that can hold shape in auto layout without setting width and height restraints? Thereby allowing the imageV

15条回答
  •  渐次进展
    2020-12-01 06:41

    I am quite new to iOS native development, but I had the same problem and found a solution.

    So the green background has this constraints:

    backgroundView.translatesAutoresizingMaskIntoConstraints = false
    backgroundView.topAnchor.constraint(equalTo: superview!.safeAreaLayoutGuide.topAnchor).isActive = true
    backgroundView.leftAnchor.constraint(equalTo: superview!.leftAnchor).isActive = true
    backgroundView.widthAnchor.constraint(equalTo: superview!.widthAnchor).isActive = true
    backgroundView.heightAnchor.constraint(equalTo: superview!.heightAnchor, multiplier: 0.2).isActive = true
    

    The image constraints:

    avatar.translatesAutoresizingMaskIntoConstraints = false
    avatar.heightAnchor.constraint(equalTo: backgroundView.heightAnchor, multiplier: 0.8).isActive = true
    avatar.widthAnchor.constraint(equalTo: backgroundView.heightAnchor, multiplier: 0.8).isActive = true
    avatar.centerYAnchor.constraint(equalTo: backgroundView.centerYAnchor, constant: 0).isActive = true
    avatar.leadingAnchor.constraint(equalTo: backgroundView.leadingAnchor, constant: 20).isActive = true
    

    on viewWillLayoutSubviews() method I set the corner radius to

    avatar.layer.cornerRadius = (self.frame.height * 0.2 * 0.8) / 2
    

    Basically, I am simply calculating the height of the image and then divide it by 2. 0.2 is the backgroungView height constraint multiplier and 0.8 the image width/height constraint multiplier.

提交回复
热议问题