在iPhone应用程序中使用视图和视图控制器时,任何人都可以解释loadView和viewDidLoad之间的区别吗?
我个人的背景是,我从代码构建我的所有视图,我不会,也不会使用Interface Builder,如果这有任何区别.
我发现通常当我将初始化代码添加到loadView时,我最终会得到一个无限的堆栈跟踪,所以我通常在viewDidLoad中完成所有的子视图构建...但是每次执行时我都不清楚它,并且什么是更适合放置init代码的地方.什么是完美的,是一个简单的初始化调用图.
谢谢!
我想知道我的iPhone应用程序如何利用特定的屏幕截图UIView作为UIImage.
我试过这段代码,但我得到的只是一张空白图片.
UIGraphicsBeginImageContext(CGSizeMake(320,480));
CGContextRef context = UIGraphicsGetCurrentContext();
[myUIView.layer drawInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
myUIView尺寸为320x480,并且有一些子视图.这样做的正确方法是什么?
我有一个指针UIView.我如何访问它UIViewController? [self superview]是另一个UIView,但不是UIViewController,对吧?
我将如何绘制一个自定义的UIView,它实际上只是一个球(2D圆圈)?我会覆盖drawRect方法吗?有人能告诉我绘制蓝色圆圈的代码吗?
此外,在类本身内更改该视图的框架是否可以?或者我是否需要从不同的班级更改框架?
(只是试图设置一个球弹跳)
我想改变anchorPoint,但保持视图在同一个地方.我试过NSLog-ing分词self.layer.position和self.center他们都保持不变,无论更改anchorPoint的.然而我的观点却在变化
关于如何做到这一点的任何提示?
self.layer.anchorPoint = CGPointMake(0.5, 0.5);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);
self.layer.anchorPoint = CGPointMake(1, 1);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);
Run Code Online (Sandbox Code Playgroud)
输出是:
2009-12-27 20:43:24.161 Type[11289:207] center point: 272.500000 242.500000
2009-12-27 20:43:24.162 Type[11289:207] center point: 272.500000 242.500000
Run Code Online (Sandbox Code Playgroud) 我试图了解这些方法的功能.你能给我一个简单的用例来理解他们的语义吗?
从文档中,例如,convertPoint:fromView:方法描述如下:
将点从给定视图的坐标系转换为接收器的坐标系.
什么是坐标系是什么意思?接收器怎么样?
例如,使用convertPoint:fromView是否有意义:如下所示?
CGPoint p = [view1 convertPoint:view1.center fromView:view1];
Run Code Online (Sandbox Code Playgroud)
使用NSLog实用程序,我已经验证了p值与view1的中心重合.
先感谢您.
编辑:对于那些感兴趣的人,我创建了一个简单的代码片段来理解这些方法.
UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 150, 200)];
view1.backgroundColor = [UIColor redColor];
NSLog(@"view1 frame: %@", NSStringFromCGRect(view1.frame));
NSLog(@"view1 center: %@", NSStringFromCGPoint(view1.center));
CGPoint originInWindowCoordinates = [self.window convertPoint:view1.bounds.origin fromView:view1];
NSLog(@"convertPoint:fromView: %@", NSStringFromCGPoint(originInWindowCoordinates));
CGPoint originInView1Coordinates = [self.window convertPoint:view1.frame.origin toView:view1];
NSLog(@"convertPoint:toView: %@", NSStringFromCGPoint(originInView1Coordinates));
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,self.window都是接收者.但是有区别.在第一种情况下,convertPoint参数以view1坐标表示.输出如下:
convertPoint:fromView:{100,100}
而在第二个中,convertPoint以superview(self.window)坐标表示.输出如下:
convertPoint:toView:{0,0}
我有一个视图叠加在许多其他视图之上.我只是使用过度的方法来检测屏幕上的一些触摸,但除此之外我不希望视图停止下面其他视图的行为,这些是滚动视图等.我怎样才能转发所有的触摸通过这个叠加视图?它是UIView的子项.
我以前从未使用过autolayout约束.我有一个小的新应用程序我正在研究并注意到NIB的观点默认为自动布局.所以,我想我会抓住机会与它一起努力,并试图找出Apple的目标.
第一个挑战:
我需要调整MKMapView的大小,我想将它设置为新位置.如果我按照以前的方式这样做:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
Run Code Online (Sandbox Code Playgroud)
...然后,只要兄弟视图得到更新,MKMapView就会"快速"回到原来的高度(在我的情况下,正在更新UISegmentedControl的标题[myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]).
所以,我觉得我想要做的是从等于父视图的HIGHT到可相对于UISegmentedControl的顶部,它改变的MKMapView的限制被覆盖:V:[MKMapView]-(16)-[UISegmentedControl]
我想要的是缩短MKMapView高度,以便显示地图视图下方的一些控件.为此,我认为我需要将约束从固定的全尺寸视图更改为底部被约束到UISegmentedControl顶部的约束...并且我希望它在视图缩小到新大小时进行动画处理.
怎么会这样呢?
编辑 - 虽然视图底部立即向上移动170,但此动画不是动画:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
Run Code Online (Sandbox Code Playgroud)
并且nibMapViewConstraint在IB中连接到底部垂直空间约束.
在我的应用程序中 - 有四个按钮,命名如下:
按钮上方有一个图像视图(或UIView).
现在,假设用户点击 - 左上角按钮.上面的图像/视图应该在该特定角落四舍五入.
我在为UIView应用圆角方面遇到了一些困难.
现在我使用以下代码将圆角应用于每个视图:
// imgVUserImg is a image view on IB.
imgVUserImg.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"any Url Here"];
CALayer *l = [imgVUserImg layer];
[l setMasksToBounds:YES];
[l setCornerRadius:5.0];
[l setBorderWidth:2.0];
[l setBorderColor:[[UIColor darkGrayColor] CGColor]];
Run Code Online (Sandbox Code Playgroud)
上面的代码将圆度应用于所提供视图的每个角.相反,我只想将圆度应用于选定的角落,如 - 顶部/顶部+左侧/底部+右侧等.
可能吗?怎么样?
我想在故事板中使用多个viewcontrollers中的视图.因此,我考虑在外部xib中设计视图,以便在每个viewcontroller中反映更改.但是如何从故事板中的外部xib加载视图呢?它甚至可能吗?如果不是这样的话,还有哪些其他选择可以适应这种情况呢?
uiview ×10
ios ×7
iphone ×5
objective-c ×3
autolayout ×1
calayer ×1
cocoa ×1
cocoa-touch ×1
debugging ×1
events ×1
ipad ×1
layout ×1
screenshot ×1
storyboard ×1
touch ×1
xcode ×1
xib ×1