角半径不起作用?

时间:2017-07-31 07:26:13

标签: css swift

我试图设置一个圆形图像视图,当我设置角半径来执行操作时,它什么也没做。我看过各种线程和解决方案都没有用

import UIKit

class AlterProfileViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    view?.backgroundColor = UIColor.white
    navigationItem.title = "Profile Settings"
    view.addSubview(selectProfileImage)


    ///Constraints for all views will go here

    _ = selectProfileImage.anchor(view.centerYAnchor, left: view.leftAnchor, bottom: nil, right: nil, topConstant: -275, leftConstant: 135, bottomConstant: 0, rightConstant: 0, widthConstant: 100, heightConstant: 100)

  //  selectProfileImage.layer.cornerRadius = selectProfileImage.frame.size.width/2

    ///////////////////////////////////////////////


    // Do any additional setup after loading the view.
}





override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


//Where all buttons and labels will be added

//will just be a nice looking image view to be next to the profile settings button
lazy var selectProfileImage: UIImageView = {
    let selectPicture = UIImageView()
   // self.selectProfileImage.layer.cornerRadius = self.selectProfileImage.frame.size.width / 2;
    selectPicture.image = UIImage(named: "Paris")

    // selectPicture.layer.cornerRadius = selectPicture.frame.size.width / 2;
    selectPicture.clipsToBounds = true
    selectPicture.translatesAutoresizingMaskIntoConstraints = false
    selectPicture.contentMode = .scaleAspectFill
    selectPicture.layer.shouldRasterize = true
    selectPicture.layer.masksToBounds = true
    return selectPicture
}()

///////////////////////////////////////////////////////////////////////////////////



}

这些方法似乎都没有效果,我现在实际上有点难过

1 个答案:

答案 0 :(得分:3)

鉴于您使用AutoLayout进行布局,我会怀疑在计算半径时图像视图的大小不正确。图像视图的初始化大小为0,0,因此计算的半径也将为0。相反,在调用super:

之后,在viewDidLayoutSubviews中移动半径计算
func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    selectProfileImage.layer.cornerRadius = selectProfileImage.frame.size.width / 2;
    selectProfileImage.layer.masksToBounds = true
}