我们正在创建一个应用程序,它需要通过导航和标签视图控制器连接的不同视图的不同标题.初始视图具有图像作为标题.第二个视图将文本作为标题,第三个视图也将文本作为标题.
我们使用故事板来构建此应用程序,这是控制器的层次结构.
Navigation Controller --> Tab Bar Controller --> View Controller 1, View Controller 2, View Controller 3
Run Code Online (Sandbox Code Playgroud)
以下是我们用于在第一个视图控制器上显示图像的代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let titleView = UIImageView()
titleView.contentMode = .scaleAspectFit
titleView.image = UIImage(named: "logo_white_thin")
self.parent?.navigationItem.titleView = titleView
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
}
Run Code Online (Sandbox Code Playgroud)
这是我们用来显示文本作为其他两个视图控制器的标题的代码.
override func viewWillAppear(_ animated: Bool) {
guard let uid = Auth.auth().currentUser?.uid else {return}
guard let username = users[uid]?.username else {return}
self.parent?.navigationItem.titleView = title(text: username)
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
print("Setting navigation …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用从用户的相机胶卷中提取的视频和照片的缩略图填充 UICollectionView。我以此处声明PHAsset的数组内部的形式从相机胶卷加载了所有媒体images:
var images = [PHAsset]()
的if-then循环检查,看看是否PHAsset可以是一个图像或视频。如果它是一个图像,它只是将它添加到集合视图中。但是,我不确定如何将视频的缩略图添加到集合视图中。任何帮助表示赞赏。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoLibraryCollectionViewCell", for: indexPath) as! PhotoLibraryCollectionViewCell
let asset = images[indexPath.row]
if asset.mediaType == PHAssetMediaType.image {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var thumbnail = UIImage()
option.isSynchronous = true
manager.requestImage(for: asset, targetSize: CGSize(width: 138, height: 138), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in
thumbnail = result!
})
cell.imageView.image = thumbnail …Run Code Online (Sandbox Code Playgroud) 我想限制 UITextView 可以移动到另一个视图的框架的区域。我尝试使用以下代码完成此操作,但是,它不会正确限制用户可以拖动 UITextView 的位置:
@IBOutlet weak var canvas: UIView!
@IBAction func handleDragOfCaption(_ sender: UIPanGestureRecognizer) {
if sender.state == .began || sender.state == .changed {
guard let senderView = sender.view else {return}
let translation = sender.translation(in: sender.view)
let x = senderView.center.x + translation.x
let y = senderView.center.y + translation.y
let point = CGPoint(x: x, y: y)
if canvas.frame.contains(point) {
senderView.center = point
sender.setTranslation(CGPoint.zero, in: senderView)
}
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅下图以直观地表示我要完成的工作。我只希望用户能够在 UIView(这是 UITextView 下方的白色方块)的边界内拖动 UITextView。任何帮助,将不胜感激。