Tag: 使用

改变UIView从UIControl实例编程

我有一个button,将视图的类更改为UIControl 我input了这行代码,但Xcode说这是一个错误 -(IBAction)button:(id)sender { self.view.class = [UIControl class]; } 所以,我的问题是如何以编程方式将我的视图的类更改为UIControl类

UIView绝对屏幕点

有没有一种简单的方法来获得UIView的绝对点? 绝对的意思是在iPad上的UIView相对于1024×768的位置? 我需要一个简单的方法,因为我有一个UITableViewCell内的UITableViewCell里面的一个视图控制器,是一个重复到第五或第六个视图控制器的另一个视图控制器的孩子提出的视图内的UIButton。 而由于这种复杂的devise,我需要UIButton的绝对矩形,所以我可以在“主”视图控制器上显示UIActionSheet。

困惑什么对象实际上包含捕获的图像时使用AVFoundation

我有一个使用AVFoundation的照片应用程序。 到目前为止,一切正常。 然而,令我困惑的一件事情是,被捕获的图像实际上包含了什么对象? 我已经NSLogging所有的对象和他们的一些属性,我仍然不知道捕获的图像包含在哪里。 这是我设置捕获会话的代码: self.session =[[AVCaptureSession alloc]init]; [self.session setSessionPreset:AVCaptureSessionPresetPhoto]; self.inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; NSError *error; self.deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:self.inputDevice error:&error]; if([self.session canAddInput:self.deviceInput]) [self.session addInput:self.deviceInput]; self.previewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session]; self.rootLayer = [[self view]layer]; [self.rootLayer setMasksToBounds:YES]; [self.previewLayer setFrame:CGRectMake(0, 0, self.rootLayer.bounds.size.width, self.rootLayer.bounds.size.height)]; [self.previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; [self.rootLayer insertSublayer:self.previewLayer atIndex:0]; self.stillImageOutput = [[AVCaptureStillImageOutput alloc] init]; [self.session addOutput:self.stillImageOutput]; [self.session startRunning]; } […]

获得UIView的可视化

假设UIView只是沿着边缘被裁剪(没有其他的视图在中间的某个地方被CGRect ,把任意UIView的可见矩形作为CGRect ,最简单的方法是什么? 为了清楚起见,这个方法不仅要检索相对于视图的超级视图的可见矩形。 但相对于所有的祖先来说,至less也是相对于所有的兄弟姐妹来说都是如此。

bezierPathWithRoundedRect不是完美的圈子

我画圈有一些问题: 这个简单的代码表明: – (void)drawRect:(CGRect)rect { self.layer.sublayers = nil; CGFloat radius = self.frame.size.width/2; circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.width) cornerRadius:radius].CGPath; circle.fillColor = [UIColor clearColor].CGColor; circle.strokeColor = [UIColor redColor].CGColor; circle.lineWidth = 4; [self.layer addSublayer:circle]; CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; drawAnimation.duration = 1.0; // "animate over 10 seconds or so.." drawAnimation.repeatCount = 1.0; […]

无法selectUITextField

我正在使用Interface Builder。 在我的XIB文件中,我有一个UIView ,用作“容器”视图来容纳我的UITextFields 。 我在UIView有三个UITextField 。 他们都连接到一个IBOutlet,每个代表连接到文件的所有者。 界面生成器中的所有内容都已勾选“启用用户交互”。 我可以select,意思是点击打开键盘,最上面两个UITextFields 。 当我点击第三个(底部) UITextField ,没有任何反应。 键盘不会出现。 我可以编程设置它成为FirstResponder,但是当我通过模拟器点击它,或通过设备点击它,没有任何反应。 我可以忽略什么?

drawRect和CGGraphicsContext如何工作?

我在Core Graphic的一些工作,我正在寻找一些关于几个主题的额外澄清。 drawRect:我已经理解了这一点,知道它是UIView所有绘图方面的内容,但是我不清楚这个场景背后发生了什么。 当我创build一个UIView并填写drawRect,然后将另一个对象的UIView设置为该自定义视图时会发生什么? drawRect何时被调用? CGGraphicsContext:我知道这是什么目的,并理解这个概念,但是我看不出它是如何工作的。 例如: CGContextSaveGState(context); CGContextAddRect(context, rect); CGContextClip(context); CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); CGContextRestoreGState(context); 上面的代码在我的应用程序和工作是正确的。 让我困惑的是它是如何工作的。 保存/恢复上下文的想法是有道理的,但是看起来像我从字面上保存上下文,使用完全相同的上下文来进行更改,然后再次恢复相同的上下文。 这看起来像是我正在保存一个上下文,然后写在上下文的顶部,只是为了恢复它。 如何将它保存到恢复它的位置,这与刚刚用于进行更改的环境是不同的实例? 在任何情况下,都使用相同的variables上下文的引用。 最后,我将不胜感激任何资源的实践项目或使用核心graphics的例子。 我希望提高我在这个问题上的技巧,因为我目前显然没有太多。

获取应用程序的主窗口

UIApplication有一个方法keyWindow ,但是如果显示一个alert视图,那么这将返回警报视图的窗口而不是应用程序的主窗口。 我怎样才能得到应用程序的主窗口?

获取由UIView的animateWithDuration创build的animation的参考或通过任何其他方式识别它

假设我制作了这样一个animation: [UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ someView.frame = CGRect(0, 100, 200, 200); } completion:nil]; 假设我在someView中有子视图,它们的layoutSubviews方法被覆盖。 我想识别该布局中正在进行的animation,并根据我检测到的animation是由我创build的,还是例如由设备旋转导致的animation来做出相应的动作。 为了使animation进行中,我使用下面的代码: for (NSString *animationKey in [self.layer animationKeys]) { CAAnimation *animation = [self.layer animationForKey:animationKey]; // … Do something … } 现在如果我将使用CABasicAnimation,我可以设置任意属性使用: [myAnimation setValue:@"mySuperCoolAnimation" forKey:@"AnimationName"]; 然后检查另一侧的钥匙。 但我想避免使用CABasicAnimation,因为我的复杂的视图层次结构。 所以为了简单起见,有没有办法像使用UIView animateWithDuration那样做:

如何强制重绘(drawRect)的子视图时,它会更改尺寸?

我有一个UIView包含UIView的一个子类的行。 子类重写了drawRect :并设置了contentMode = UIViewContentModeRedraw 。 当用户挤压和拉伸父容器时, child views压扁和拉伸。 随着形状发生变化,我想重复调用drawRect来改变child views的内容。 到目前为止,我一直没有成功。 什么是正确的方法来做到这一点? 干杯, 道格