2016-09-30 8 views
0

アルバムから写真を選択して1つのimageViewに表示し、NSUserDefaultsに保存します。 以下のコードは、headSculptureImageでそれをNSUserDefaultsから画像を取得して表示することを意味NSUserDefaultsから取得した後に写真の図形をスウィフト

この3つ

if let userHeadSculpture = NSUserDefaults.standardUserDefaults().objectForKey("userHeadSculpture") { 
    let image = UIImage(data: userHeadSculpture as! NSData) 
    headSculptureImage.image = image 
    headSculptureImage.layer.cornerRadius = (headSculptureImage.frame.size.height)/2; 
    headSculptureImage.layer.masksToBounds = true 
    headSculptureImage.layer.borderWidth = 0; 
} 

が問題となる円形になるように、このImageViewのを作るために使用される

headSculptureImage.layer.cornerRadius = (headSculptureImage.frame.size.height)/2; 
    headSculptureImage.layer.masksToBounds = true 
    headSculptureImage.layer.borderWidth = 0; 

私はアルバムから写真を選んで、それはのように動作しますenter image description here

私は、再開時に予想したことは写真と同じですしかし、それはとして示したenter image description here

それを修正するには?

+0

両方の場合に 'headSculptureImage.frame.size'を印刷しようとしましたか?このような菱形は、典型的には、コーナー半径を半幅よりも大きく設定することによって生じる。この詳細で質問を延長してください。 – vzsg

答えて

1

のコードをviewDidLoadに使用しているようです。その場合、制約がロードされる前にviewDidLoadが呼び出されているため、headSculptureImage.frame.size.heightという値は、制約を持つ場合とは異なる値になり、このような結果が生成されます。
これを解決するには、制約がすべて設定された後に呼び出されるviewDidLayoutSubviewsにコードを移動して、cornerRadius値が必要な値に正確になるようにしてください。

viewDidLayoutSubviewsはかなり頻繁に呼び出されるので、必要なときだけ呼び出されるようにフラグを追加することをおすすめします。