CGAffineTransform изменяет размер представления после поворота

#ios #swift #swiftui #uikit #cgaffinetransform

Вопрос:

Я использую UIViewRepresentable в своем приложении. Я хочу повернуть представление, для которого я использую CGAffineTransform. Но он изменяет размер представления, он пытается вписать представление в рамку.

Вот мой код

Uiviewпредставляемый

 struct UICardView: UIViewRepresentable {   var imageName: String    var width: CGFloat = UIScreen.screenWidth  var height: CGFloat = UIScreen.screenHeight   var card = UIImageView()   class Coordinator: NSObject, UIGestureRecognizerDelegate {   var parent: UICardView  var view: UIView   init(_ parent: UICardView, _ view: UIView) {  self.parent = parent  self.view = view  }   @objc func handleTap(tap: UITapGestureRecognizer) {  view.transform = CGAffineTransform(rotationAngle: .pi / 2)  }    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -gt; Bool {  return true  }  }   func makeCoordinator() -gt; UICardView.Coordinator {  Coordinator(self, card)  }   func makeUIView(context: Context) -gt; UIView {   card.frame = CGRect(x: 0, y: 0, width: width, height: height)  card.image = UIImage(named: self. imageName)  card.layer.cornerRadius = 10  card.clipsToBounds = true  card.contentMode = .scaleAspectFit   card.isUserInteractionEnabled = true   let tapGesture = UITapGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.handleTap(tap:)))  tapGesture.delegate = context.coordinator  card.addGestureRecognizer(tapGesture)   return card  }   func updateUIView(_ uiView: UIView, context: Context) {    } }  

Я использую contentMode .scaleToFit, поэтому сейчас он пытается вписаться в кадр, но даже с заливкой или без какого-либо режима содержимого это приводит к неожиданному поведению

Это мой код SwiftUI

 struct CardView: View {    var body: some View {  UICardView( imageName: "SampleImage")  .frame(width: UIScreen.screenWidth, height: UIScreen.screenHeight, alignment: .top)  } }  

Комментарии:

1. С инструментами SwiftUI не было бы необходимости в старом api UIKIT, таком как CGAffineTransform!