好吧,我想最好表明我的意思:
您可以清楚地看到,一旦我们触摸按钮并移出它,随后的移入事件会触发从远处按钮状态的变化.
虽然这种行为对于所有UIButton都很自然,但我无法谷歌解决方案来改变它.
有没有办法减少这种类型的UIButton灵敏度的命中区域?我希望它减少,因为我觉得按钮足够大,它会提供更好的用户体验以及上/下音效.
UPD: UIButton的以下覆盖代码发布在另一个线程中:
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
CGFloat boundsExtension = 25.0f;
CGRect outerBounds = CGRectInset(self.bounds, -1 * boundsExtension, -1 * boundsExtension);
BOOL touchOutside = !CGRectContainsPoint(outerBounds, [touch locationInView:self]);
if(touchOutside)
{
BOOL previousTouchInside = CGRectContainsPoint(outerBounds, [touch previousLocationInView:self]);
if(previousTouchInside)
{
NSLog(@"Sending UIControlEventTouchDragExit");
[self sendActionsForControlEvents:UIControlEventTouchDragExit];
}
else
{
NSLog(@"Sending UIControlEventTouchDragOutside");
[self sendActionsForControlEvents:UIControlEventTouchDragOutside];
}
}
return [super continueTrackingWithTouch:touch withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)
它改变了拖入/拖出事件使用的命中区域扩展,但按钮向上/向下状态切换的方式与之前完全相同.
我试图找到一种方法来读取和写入JPEG图像到用户图库(相机胶卷),而无需iOS重新压缩它们.UIImage似乎是这里的瓶颈.我发现保存到用户库的唯一方法是UIImageWriteToSavedPhotosAlbum().有没有解决的办法?
现在,我的例程看起来像这样
-Ask UIImagePickerController的照片.当它确实完成了PickinPickingMediaWithInfo时,做:
NSData *imgdata = [NSData dataWithData:UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1)];
[imgdata writeToFile:filePath atomically:NO];
Run Code Online (Sandbox Code Playgroud)
- 在磁盘上无损处理JPEG.
- 然后保存回来:
UIImageWriteToSavedPhotosAlbum([UIImage imageWithContentsOfFile:[self getImagePath]], self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
Run Code Online (Sandbox Code Playgroud)
这是一个关于3次传球后质量下降情况的小动画:
每次我这样做都会变得更糟,但我无法自动化图像拾取部分,以便在50/100/1000周期内对其进行全面测试.