Constraint가 있는 View에 코드를 사용하여 View 겹침
예를 들어, StoryBoard에서 백그라운드의 Image 를 레이아웃해 두고 그 1 픽셀 안쪽에 코드로 이미지를 표시하는 경우입니다.
이 때의 방법으로는
있습니다.
1. 은 예를 들어 배경에 대해 4방향 1픽셀의 공간이라고 하는 Constraint를 붙입니다만, 이 경우 원래의 배경화면의 애스펙트비가 어떻게 되어 있는지 모르기 때문에, 표시 화상을 백그라운드내에서 정사각형으로 가능한 한 크게 설정을 할 수 없습니다. 또 이렇게 한다면, 표시용의 ImageView 를 Storyboard 로 설정해 두고 코드로 이미지만을 나중에 설정하는 것으로 좋을 것입니다.
2.는 사이즈와 위치를 스스로 파악할 수 있으므로 상기와 같은 백그라운드 내에서 정사각형이라든지, 라고 하는 설정도 할 수 있습니다. 이 경우 언제 원래 이미지의 정보를 얻는 것이 중요하며 일반적으로 자주하는 viewDidLoad 타이밍은 여전히 원래 이미지의 Constraint를 반영하지 않으며 viewDidLayoutSubview 또는 viewDidAppear 타이밍이 아닌 경우 올바른 정보를 얻을 수 있습니다. 아니.
또, 이 방법에서는 백그라운드 화상과의 관계가 없기 때문에, 로테이트를 허용하는 앱에서는 로테이트시에 한번 떼어내 재설정하는 처리가 필요합니다.
``import UIKit
import iAd
class PhotoPickerViewController: UIViewController,
UINavigationControllerDelegate, UIImagePickerControllerDelegate,
ADBannerViewDelegate {
// 画面要素プロパティ
@IBOutlet weak var _Advertise: ADBannerView! // 広告エリア
@IBOutlet weak var _picturebg: UIImageView! // 画像表示バックグランド
@IBOutlet weak var _cropFrame: UISlider! // 切り取りフレームサイズ
// 画面用変数
var _photoView = UIImageView() // 画像表示エリア
// 変数
var _photoImage: UIImage? // 選択写真イメージ
var photoFrame: CGRect? // 写真フレーム
var puzzlePhoto: UIImage? // パズル用写真データ
var _pickButton: UIButton? // ピッカーボタン
var _okButton: UIButton? // 確定ボタン
var _scaleSlider: UISlider? // スライダー
// ===================
// UI
// ===================
// ロード完了時に呼ばれる **** iPad は表示位置とサイズを変える
override func viewDidLoad() {
super.viewDidLoad()
// 設定値ロード
loadDefault()
}
override func viewDidAppear(animated: Bool) {
// 表示エリアサイズ設定
if _photoView.image != nil {
_photoView.removeFromSuperview()
}
let _screen = UIScreen.mainScreen().bounds
let photoX = _picturebg.frame.origin.x + 1
let photoY = _picturebg.frame.origin.y + 1
let photoWidth = _picturebg.frame.width - 2
let photoHeight = _picturebg.frame.height - 2
// 画像設定
if let photo = puzzlePhoto {
_photoImage = photo
} else {
_photoImage = UIImage(named: "DefaultPhoto.png")
}
_photoView = makeImageView(CGRectMake(photoX, photoY, photoWidth, photoHeight), image: _photoImage!)
_photoView.contentMode = UIViewContentMode.ScaleAspectFit
self.view.addSubview(_photoView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// イメージビューの生成
func makeImageView(frame: CGRect, image: UIImage) -> UIImageView {
var imageView = UIImageView()
imageView.frame = frame
imageView.image = image
return imageView
}
}
``
Reference
이 문제에 관하여(Constraint가 있는 View에 코드를 사용하여 View 겹침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MichaelAwamura/items/97b93909b91e7e76e37e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)