- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用长按手势识别器重新排序 UITableView 单元格。当我从单元格表示层使用 UIGraphicsGetImageFromCurrentImageContext() 时,CAAnimations 将被恢复。
//从按下的 uitableviewcell 生成图像的代码
UIGraphicsBeginImageContextWithOptions(cell.bounds.size, false, 0)
if let layer = cell.layer.presentationLayer() {
layer.renderInContext(UIGraphicsGetCurrentContext()!)
} else {
cell.layer.renderInContext(UIGraphicsGetCurrentContext()!)
}
let cellImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//UIControl 子类的代码
//MARK: Properties
var switchControl = CAShapeLayer()
var backgroundLayer = CAShapeLayer()
//标记:设置
override func setUpView(){
super.setUpView()
didSetUpView = true
self.backgroundColor = UIColor.clearColor()
let frame = CGRectMake(0, 0, self.bounds.width, self.bounds.height)
let radius = self.bounds.height/2 - lineWidth
let roundedRectPath = UIBezierPath(roundedRect:CGRectInset(frame, lineWidth, lineWidth) , cornerRadius:radius)
backgroundLayer.fillColor = stateToFillColor(isOn)
backgroundLayer.strokeColor = lineColor.CGColor
backgroundLayer.lineWidth = lineWidth
backgroundLayer.path = roundedRectPath.CGPath
self.layer.addSublayer(backgroundLayer)
let innerLineWidth = self.bounds.height - lineWidth*3 + 1
let switchControlPath = UIBezierPath()
switchControlPath.moveToPoint(CGPointMake(lineWidth, 0))
switchControlPath.addLineToPoint(CGPointMake(self.bounds.width - 2 * lineWidth - innerLineWidth + 1, 0))
var point = backgroundLayer.position
point.y += (radius + lineWidth)
point.x += (radius)
switchControl.position = point
switchControl.path = switchControlPath.CGPath
switchControl.lineCap = kCALineCapRound
switchControl.fillColor = nil
switchControl.strokeColor = circleColor.CGColor
switchControl.lineWidth = innerLineWidth
switchControl.strokeEnd = 0.0001
self.layer.addSublayer(switchControl)
changeValueAnimate(isOn,duration: animateDuration)
}
//MARK: - Animate
func changeValueAnimate(turnOn:Bool, duration:Double){
let times = [0,0.49,0.51,1]
let switchControlStrokeStartAnim = CAKeyframeAnimation(keyPath:"strokeStart")
switchControlStrokeStartAnim.values = turnOn ? [0,0,0,1] : [1,0,0, 0]
switchControlStrokeStartAnim.keyTimes = times
switchControlStrokeStartAnim.duration = duration
switchControlStrokeStartAnim.removedOnCompletion = true
let switchControlStrokeEndAnim = CAKeyframeAnimation(keyPath:"strokeEnd")
switchControlStrokeEndAnim.values = turnOn ? [0,1,1,1] : [1,1,1,0]
switchControlStrokeEndAnim.keyTimes = times
switchControlStrokeEndAnim.duration = duration
switchControlStrokeEndAnim.removedOnCompletion = true
let backgroundFillColorAnim = CAKeyframeAnimation(keyPath:"fillColor")
backgroundFillColorAnim.values = [stateToFillColor(!turnOn),
stateToFillColor(!turnOn),
stateToFillColor(turnOn),
stateToFillColor(turnOn)]
backgroundFillColorAnim.keyTimes = [0,0.5,0.51,1]
backgroundFillColorAnim.duration = duration
backgroundFillColorAnim.fillMode = kCAFillModeForwards
backgroundFillColorAnim.removedOnCompletion = false
if rotateWhenValueChange{
UIView.animateWithDuration(duration, animations: { () -> Void in
self.transform = CGAffineTransformRotate(self.transform, CGFloat(M_PI))
})
}
UIView.animateWithDuration(duration / 3, animations: {
self.transform = CGAffineTransformMakeScale(1.15, 1.15)
}) { (animate: Bool) in
UIView.animateWithDuration(duration / 3 * 2, animations: {
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
})
}
let switchControlChangeStateAnim : CAAnimationGroup = CAAnimationGroup()
switchControlChangeStateAnim.animations = [switchControlStrokeStartAnim,switchControlStrokeEndAnim]
switchControlChangeStateAnim.fillMode = kCAFillModeForwards
switchControlChangeStateAnim.removedOnCompletion = false
switchControlChangeStateAnim.duration = duration
let animateKey = turnOn ? "TurnOn" : "TurnOff"
switchControl.addAnimation(switchControlChangeStateAnim, forKey: animateKey)
backgroundLayer.addAnimation(backgroundFillColorAnim, forKey: "Color")
}
最佳答案
问题已解决
让 cellImage = cell.snapshotViewAfterScreenUpdates(false)
关于ios - UIGraphicsGetImageFromCurrentImageContext() 不包括 CAAnimations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610052/
我正在拍摄屏幕照片并使用 UIGraphicsGetImageFromCurrentImageContext() 对其进行操作。一切都运转良好。然而,在 iPhone 4 上,分辨率看起来相当糟糕,因
UIGraphicsGetImageFromCurrentImageContext 返回自动释放的 UIImage。 想知道是否有办法从上下文中获取“分配”图像? 我想要等同于以下代码的东西,也许代码
我漏水了,但看不到哪里。 这是我的部分代码: + (UIImage *) imageWithColor:(UIColor *) color andSize:(CGSize) size { UI
我编写了以下代码片段来截取屏幕快照: UIGraphicsBeginImageContext(animationView.frame.size); [[window layer] renderInCo
UIImageView *cellimage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0 , 107, 70)]; 我确信以上声明将在视网
我正在使用 UIImagePickerControllerSourceTypeCamera 和自定义 cameraOverlayView 打开相机,这样我就可以在没有“使用照片”步骤的情况下拍摄多张照
我想将一个 UIImage 分成两个单独的图像。我使用以下(有效)代码。 UIImage *splitMeInTwo = [UIImage imageNamed:@"Star.png"]; UIIma
我正在尝试在 PDF 中创建页面的预览图像但是我在释放内存时遇到了一些问题。 我写了一个简单的测试算法来循环这个问题,应用在第 40 次迭代附近崩溃: NSArray *paths = NSSearc
我正在尝试使用长按手势识别器重新排序 UITableView 单元格。当我从单元格表示层使用 UIGraphicsGetImageFromCurrentImageContext() 时,CAAnima
我试图理解,UIgraphicsGetImageContext() 函数,根据我的理解,它是一个函数,它从当前位图上下文中获取图像,所以每当我在 Canvas 上绘制一些东西并调用此函数时,我都会绘制
我想在我的应用程序中进行基本的照片编辑,现在我需要能够在照片上添加文本。原始照片的宽度和高度大于 2000 像素,因此将在不修改其比例的情况下缩放以适合屏幕。 因此,我将图像放在 UIImageVie
我有一个 UIView,用户可以在其中绘制各种 UIBezierPaths。 我需要分析绘制的 BezierPaths 来处理某些模式。我还没有找到任何将 UIBezierPaths 转换为坐标/点列
我试图了解我的代码在使用队列时崩溃的方式,但在使用主线程时却能正常工作。此代码运行良好: - (void)penMoved:(NSSet *)touches { UITouch *touch
在我的绘图应用程序中,我使用 UIImage 来缓存绘图。 以下代码行导致内存问题: UIGraphicsBeginImageContextWithOptions(self.bounds.size,
我有这个 UIImage 的扩展: extension UIImage { func resizeImage(newWidth: CGFloat, newHeight: CGFloat? = nil
我目前正在使用 UIGraphicsGetImageFromCurrentImageContext() 将内容的图像保存到用户的相机胶卷中,但图像质量比我在模拟器中进行屏幕截图时差。有什么办法可以改善
快速代码 当我们获取一个UIView的截图时,我们通常会使用这段代码: UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
我的 iPhone 应用程序从服务器下载图像文件,将其存储到 NSTemporaryDirectory() 中,然后在 UI 中异步加载图像。代码流程是这样的: 显示带有加载事件指示器的 View 并
好的,我正在拍摄用 iPhone 上的相机拍摄的照片的屏幕截图。我将相机照片放入 UIImageView 中,并使用此类代码抓取它的屏幕截图(来自 http://www.skylarcantu.com
我想以特定大小截取特定位置的屏幕截图。我找到了这个。但它需要整个屏幕。我在哪里可以设置 CGRect。 UIGraphicsBeginImageContext(self.window.bounds.s
我是一名优秀的程序员,十分优秀!