我认为我的问题可以归结为如何存储和重置视图的转换.但随后解释我的情况可能有所帮助.
如果我将下面的变换一个接一个地应用到视图中(就像我将此代码添加到开关或按钮一样).我得到了我期望的完全结果:比例在:原始视图大小的.55倍的视图和原始比例的视图之间切换.也可以按照我的意愿扩展someView的子视图.广告无限.完善.
//tranformScale 1
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.55, 0.55 );
//tranformScale 2
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0 );
Run Code Online (Sandbox Code Playgroud)
麻烦的是我想使用这个代码(或类似的)来缩放self.view的子视图,当iOS设备进入横向时,将子视图适合横向屏幕(并在纵向时备份).它几乎可以工作,但由于某种原因而不是为要缩放的视图的帧输出圆值(如使用按钮调用变换的测试所发生的那样),会产生逐渐奇怪的值.最终,在大约4次旋转后,子视图飞离屏幕.我怀疑它与self.view改变形状有关,但是当我记录self.view的框架时,它的形状是非常可预测的.
顺便说一下,我使用autoresizingMask灵活边距来居中视图,而不是使用自动布局.也许我应该用另一种类型的计算来集中视图?
谢谢阅读!
我需要获取UIText范围的开始和结束的数值.到目前为止,我只能将描述打印成字符串.
从查看selectedTextRange,我认为它可能是一个结构?如何获取结构的元素?
UITextRange *selectedRange = [myTextView selectedTextRange];
NSLog(@"selectedRange.start %@, selectedRange.end %@ ", selectedRange.start.description, selectedRange.end.description);
Run Code Online (Sandbox Code Playgroud)
这是描述:
2013-03-26 13:44:03.127 AttributedString[24678:907] selectedRange.start <UITextPosition: 0x1ead8f10, 8, {"Rrrttgh "}, {"gggggh ggg..."}>, selectedRange.end <UITextPosition: 0x1eaf7860, 14, {"...tgh gggggh"}, {" gggg"}>
Run Code Online (Sandbox Code Playgroud) 下面的手势识别器代码通常会从中心缩放视图,但在iOS6中启用自动布局时则不会.当启用自动布局时,视图似乎从其原点开始缩放.其他仿射变换(特别是缩放和旋转)也没有像我预期的那样工作.
任何人都有这个问题,或者可以让我以正确的方式处理这个问题?
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}
Run Code Online (Sandbox Code Playgroud) xcode cgaffinetransform ios cgaffinetransformscale autolayout
我试图以最有效的方式运行一些核心图像过滤器.试图避免内存警告和崩溃,这是我在渲染大图像时得到的.我正在看Apple的核心图像编程指南.关于多线程,它说:"每个线程必须创建自己的CIFilter对象.否则,你的应用程序可能会出现意外行为."
这是什么意思?
我实际上试图在后台线程上运行我的过滤器,所以我可以在主线程上运行HUD(见下文).这在coreImage的上下文中是否有意义?我认为核心图像固有地使用GCD.
//start HUD code here, on main thread
// Get a concurrent queue form the system
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
//Effect image using Core Image filter chain on a background thread
dispatch_async(dispatch_get_main_queue(), ^{
//dismiss HUD and add fitered image to imageView in main thread
});
});
Run Code Online (Sandbox Code Playgroud)
更多来自Apple Docs:
保持线程安全
CIContext和CIImage对象是不可变的,这意味着每个对象都可以在线程之间安全地共享.多个线程可以使用相同的GPU或CPU CIContext对象来呈现CIImage对象.但是,对于可变的CIFilter对象,情况并非如此.无法在线程之间安全地共享CIFilter对象.如果您的应用程序是多线程的,则每个线程都必须创建自己的CIFilter对象.否则,您的应用可能会出现意外行为.
使用核心图形,是否可以在路径内部进行描边?相比,线条重量在外侧拉出一半而在一条抚摸路径内侧拉出一半?
原因是,如果视图的一部分位于屏幕边缘而部分不是,则控制笔划的可见厚度会更容易.屏幕边缘上的部分被切断,而完全在屏幕上的视图边缘看起来更厚(如果笔划可见,则为两侧).

试图在Mac上安装scikits.audiolab-0.11.0,它需要libsndfile:http://www.mega-nerd.com/libsndfile/.我确实使用libsndfile_python-1.0.0-py2.7-macosx10.5.mpkg安装了libsndfile,但是audiolab设置错误:找不到libsndfile库.audiolab安装程序的错误如下.它表明libsndfile的位置可以在site.cfg中指定.
我对这些类型的安装缺乏经验是妨碍了解这一点.任何人都可以就如何完成这项工作提出一些建议吗?或者回答下面的问题?
顺便说一下,我检查了我的/ usr/lib目录并且没有libsndfile.我认为默认情况下,audiolab设置会查找文件.
感谢阅读和任何帮助.
audiolab安装程序出错:
numpy.distutils.system_info.NotFoundError: sndfile (http://www.mega-nerd.com/libsndfile/) library not found.
Directories to search for the libraries can be specified in the
site.cfg file, in section [sndfile].
Run Code Online (Sandbox Code Playgroud) 下面的代码绘制了一个完美的椭圆径向渐变,但没有填充它的视角.如何让它超出椭圆的边缘?记录的选项是kCGGradientDrawsAfterEndLocation,但我认为它在ios中不可用.
- (void)drawRect:(CGRect)rect
{
CGFloat colors [] = {
0.2, 0.2, 0.2, 1.0,
0.0, 0.0, 0.0, 1.0
};
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
CGColorSpaceRelease(baseSpace), baseSpace = NULL;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextAddEllipseInRect(context, rect);
CGContextClip(context);
CGContextDrawRadialGradient(context, gradient, self.center, 0, self.center, self.frame.size.width, kCGGradientDrawsAfterEndLocation);
CGGradientRelease(gradient), gradient = NULL;
CGContextRestoreGState(context);
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个CoreImage过滤器链,并且能够通过将其单独的效果与alpha或不透明度设置合成来控制链中每个过滤器的"强度",但我没有看到与alpha合成的方法或文档中的不透明度.
我猜想我可以跳出核心图像过滤器链和复合核心图形上下文.
我试图使用结构来存储三个值作为一个单位可以这么说.我收到一个错误:" Expression not assignable"当我尝试从对象的超级视图为结构值赋值时.
有谁知道这是为什么?
在我班的.h文件中,我已经定义了struct和一个属性
@interface MyClass : UIView
{
struct customStruct {
float a;
float b;
float c;
};
}
@property (assign, nonatomic) struct customStruct myStruct;
Run Code Online (Sandbox Code Playgroud)
从超级视图我尝试分配一个值,我得到一个错误:" Expression not assignable"
object.myStruct.a = someValue;
Run Code Online (Sandbox Code Playgroud) 我有一个带有几个核心图像过滤器的项目,每个过滤器都连接到不同的滑块.一切正常但我还没有找到将结果从一个过滤器传递到下一个过滤器的最佳方法.每次我更改任何其他滑块时,它们都会重置.原因是因为从导入的图像创建的原始图像被每个滤镜作为输入图像绘制.但不知道如何解决这个问题.
我试图想出将多个滤镜的结果传递到一个输出图像的最佳方法.
这是项目:owolf.net/uploads/StackOverflow/CoreImageFilter.zip
以及下面粘贴的一些viewControler代码:
- (void)viewDidLoad
{
//Create CIImage
UIImage *aUIImage = [imageView image];
CGImageRef aCGImage = aUIImage.CGImage;
aCIImage = [CIImage imageWithCGImage:aCGImage];
//Create context
context = [CIContext contextWithOptions:nil];
saturationFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
brightnessFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
contrastFilter = [CIFilter filterWithName:@"CIColorControls" keysAndValues: @"inputImage", aCIImage, nil];
[super viewDidLoad];
}
- (IBAction)saturationSliderValueChanged:(id)sender {
outputImage = [saturationFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
newUIImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
[imageView setImage:newUIImage];
}
- (IBAction)brightnessSliderValueChanged:(id)sender …Run Code Online (Sandbox Code Playgroud) ios ×7
core-image ×3
uiview ×3
objective-c ×2
struct ×2
audio ×1
autolayout ×1
autoresize ×1
drawrect ×1
gradient ×1
image ×1
libsndfile ×1
python ×1
slider ×1
stroke ×1
uitextrange ×1
xcode ×1
xcode4 ×1