使用图层(borderWidth,borderColor等)向UIImageView添加边框非常容易。是否有可能在图像上添加边框,而不是在图像视图上添加边框?有人知道吗
更新:
我尝试遵循以下建议并使用extension。谢谢你,但是我没有得到理想的结果。这是我的代码。怎么了?
import UIKit
class ViewController: UIViewController {
var imageView: UIImageView!
var sizeW = CGFloat()
var sizeH = CGFloat()
override func viewDidLoad() {
super.viewDidLoad()
sizeW = view.frame.width
sizeH = view.frame.height
setImage()
}
func setImage(){
//add image view
imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: sizeW/2, height: sizeH/2))
imageView.center = view.center
imageView.tintColor = UIColor.orange
imageView.contentMode = UIViewContentMode.scaleAspectFit
let imgOriginal = UIImage(named: "plum")!.withRenderingMode(.alwaysTemplate)
let borderImage = imgOriginal.imageWithBorder(width: 2, color: UIColor.blue)
imageView.image = borderImage
view.addSubview(imageView)
}
}
extension UIImage …Run Code Online (Sandbox Code Playgroud) 我有两个子视图:紫色的子视图属于一个主视图,它的语法效果很好:
sSubview.center = view.center
Run Code Online (Sandbox Code Playgroud)
橙色的属于紫色视图,相同的语法无法将其正确放置在中间。你能知道我的错误在哪里吗?
Here is my code:
import UIKit
class ViewController: UIViewController {
var sSubview = UIView()
var sLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
view.backgroundColor = UIColor.lightGray
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLayoutSubviews() {
createSimplestSubview()
}
// First subview
func createSimplestSubview() {
sSubview = UIView(frame: CGRect(x: 0, y: 0, width: …Run Code Online (Sandbox Code Playgroud) 在Swift中将CollectionView作为子视图
我试图插入一个非常简单的collectionView作为Subview,但是无法获得正确的框架。我究竟做错了什么?请问你能帮帮我吗?
这是我的代码:
import UIKit
class ViewController: UIViewController {
var collectionView: UICollectionView!
@IBOutlet weak var testView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLayoutSubviews() {
setupCollectionView()
}
func setupCollectionView() {
let layout = UICollectionViewFlowLayout()
collectionView = UICollectionView(frame: testView.frame, collectionViewLayout: layout)
collectionView.backgroundColor = UIColor.green
testView.addSubview(collectionView)
}
Run Code Online (Sandbox Code Playgroud)
}
为了遵循这次讨论,我实施了Yurii Kotov的建议:
struct ContentView: View {
@State private var index = 0
@ViewBuilder
var body: some View {
if index == 0 {
MainView()
} else {
LoginView()
}
}
Run Code Online (Sandbox Code Playgroud)
效果很好。但如果我尝试使用 switch 语句来代替:
switch index {
case 0: MainView()
case 1: LoginView()
default:
print("# error in switch")
}
Run Code Online (Sandbox Code Playgroud)
什么都没发生。没有错误警报,但也根本没有结果。有人可以帮忙吗?