我试图调整uiimage比例 . 现在我正在将图像变成正方形而不是正确的宽高比 . 如果我将宽度和高度uiimage更改为pickImage.frame.size.width,pickImage.frame.size.hight,那么UIImage看起来很大 .
如果我设置了pickImage?.contentMode = .scaleAspectFit然后图像设置它的位置但是阴影显示完整图像视图而不是图像选择一个 . 这是我得到的结果截图
并且关闭按钮应该是左上角,这里当我从图像选择器中选择图像时,关闭按钮图像的任何其他位置设置为正确地基于风景或肖像 . 这是我使用的代码:
func addImage(url : URL) {
let tag = Int(arc4random_uniform(6))
pickImage = UIImageView()
pickImage?.sd_setImage(with:url)
pickImage?.sd_setShowActivityIndicatorView(true)
pickImage?.backgroundColor = UIColor.lightGray
pickImage?.sd_setIndicatorStyle(.gray)
pickImage?.frame = CGRect(x: randomNumber(inRange:
200...Int(touchDrawview.frame.width - 200)), y: Int(getYValue(maxYValue:
Int(touchDrawview.frame.height - 200))), width: 200, height: 200)
pickImage?.autoresizingMask = [.flexibleTopMargin, .flexibleHeight,
.flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin,
.flexibleWidth]
pickImage?.contentMode = .scaleAspectFit
pickImage?.tag = tag
pickImage?.isUserInteractionEnabled = true
let imageclose = UIImage(named: "imageclose")
closeImage = UIImageView(image : imageclose)
closeImage?.frame = CGRect(x: 10, y: 10, width: 30, height: 30)
closeImage?.tag = tag
closeImage?.isHidden = true
closeImage?.isUserInteractionEnabled = true
pickImage?.layer.shadowColor = UIColor.white.cgColor
pickImage?.layer.shadowOffset = CGSize(width: 0, height: 3)
pickImage?.layer.shadowOpacity = 1
pickImage?.layer.shadowRadius = 1.0
pickImage?.clipsToBounds = false
let longGuetureImage = UILongPressGestureRecognizer(target: self, action:
#selector(longPressImage(sender:)))
longGuetureImage.minimumPressDuration = 0.1
pickImage?.isUserInteractionEnabled = true
longGuetureImage.delegate = self
pickImage?.addGestureRecognizer(longGuetureImage)
let panGesture = UIPanGestureRecognizer(target: self, action:
#selector(handlePanImage(recognizer:)))
panGesture.delegate = self
pickImage?.isUserInteractionEnabled = true
pickImage?.addGestureRecognizer(panGesture)
let tapGuetureImage = UITapGestureRecognizer(target: self, action:
#selector(removeImage(sender:)))
tapGuetureImage.delegate = self
closeImage?.addGestureRecognizer(tapGuetureImage)
let tapGueturemainImage = UITapGestureRecognizer(target: self, action:
#selector(selectdragImageTap(_:)))
tapGueturemainImage.delegate = self
pickImage?.addGestureRecognizer(tapGueturemainImage)
let rotate = UIRotationGestureRecognizer(target: self, action:
#selector(handlerotateImage(recognizer:)))
rotate.delegate = self
pickImage?.addGestureRecognizer(rotate)
let pinch = UIPinchGestureRecognizer(target: self, action:
#selector(handlePinchImage(sender:)))
pinch.delegate = self
pickImage?.addGestureRecognizer(pinch)
pickImage?.dropShadowOff()
addPickedImage(image: pickImage!, closeimage: closeImage!,imageType :
PickedType.image.rawValue,imageData: url.absoluteString)
pickImage = nil
closeImage = nil
}
2 回答
试试这个:
首先使用clipsToBounds = true创建UIView,在此视图上应用阴影,然后在此视图中将pickimage和按钮添加为subView . 因为clipsToBounds = true会停止在当前视图上删除阴影 .
调整图像大小时,图像的宽高比可能与视图不同 . 您尝试实现的目标有两种方法 .
Approach 1: 调整图像大小以适合视图 . 这里宽高比可能与视图不同,因此图像可能会失真 . 要调整图像大小,请参阅下文,
参考:https://aurvan.github.io/atkit-ios-release/index.html
课程参考:https://aurvan.github.io/atkit-ios-release/helpbook/Extensions/UIImage.html
码:
Approach 2: 手动计算图像大小并从视图的水平中心调整关闭按钮 . 我没有尝试过代码,但下面的代码应该可以工作,