大家好我是iOS开发的新手,目前我遇到了一些问题,如果用户没有登录,我正在尝试以模态方式显示登录表单.
我正在使用NSUserDefaults存储一个id,我只是检查它是否存在.如果它没有,那么我希望UIViewController出现.
到目前为止,我在UINavigationController中有以下代码,它位于UITabViewController中,我试图让UIViewController出现在第一个UINavigationController(被选中的那个)之上,在动画发生的那一刻但是只有一个即使登录屏幕已经创建了所有相关的文本框等,也会出现黑屏.如果我将此登录屏幕设置为要加载的初始视图,则会加载正常.
这是出现在UINavigationController的First viewcontroller中的代码.
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (![prefs stringForKey:@"id"]){
LoginViewController *loginController = [[LoginViewController alloc] init];
[self presentModalViewController:loginController animated:YES];
} else {
[self loadCoffeeUserOrders:[prefs stringForKey:@"id"]];
}
Run Code Online (Sandbox Code Playgroud)
模态视图正在加载,但目前它只是显示黑色,我尝试创建一个新的登录屏幕,同样的事情发生:只有一个黑屏.
希望有足够的信息让某人了解可能发生的事情,我对iOS开发很新,所以如果我犯了一些错误,那么知道我哪里出错了会很高兴.
谢谢
我有一个已设置图像的UIImageView,并尝试将CALayer添加为子视图.它工作(子层计数从0上升到1)但屏幕上没有任何反应.即使我尝试将图层背景设置为黑色或将隐藏设置为"否".
CALayer*layer=[[CALayer alloc]initWithLayer:anotherUIImageView.layer];
[myUIImageVIew.layer addSublayer:layer];
[[myUIImageView.layer.sublayers objectAtIndex:0] setHidden:NO];
[[myUIImageView.layer.sublayers objectAtIndex:0] setBackgroundColor:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我在CATransaction中设置了一些CALayer变换和边界修改.但是,无论我使用的方法(键值,setAnimationDuration)都没有动画,更改已完成,但立即没有过渡.你知道为什么吗?谢谢!
/* CALayer*layer=[CALayer layer];
layer.bounds =AnUIImageView.bounds;
layer.contents=AnUIImageView.layer.contents;
[AnotherUIImageView.layer addSublayer:layer];
CGPoint thecentre=AnUIImageView.center;
CALayer* layerInTarget=[AnotherUIImageView.layer.sublayers lastObject];
[layerInTarget setPosition:[self.view convertPoint:thecentre toView:AnotherUIImageView]];
AnUIImageView.layer.hidden=YES;
Run Code Online (Sandbox Code Playgroud)
*///上面的代码有效,我表明它是完整的
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.0f]
forKey:kCATransactionAnimationDuration];
layerInTarget.position=[self.view convertPoint:AnotherUIImageView.center toView:AnotherUIImageView];
layerInTarget.transform=CATransform3DMakeScale(0.6,0.6,0.6);
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud) 我有一个正常工作的for循环.我添加了一个新的UIVIew子类分配,在每个循环迭代中完成:
for (n=something; n>0; n--)
{
//(...)
MyView* theview=[[myView alloc]initWithFrame:self.frame];
float y=sin(DEGREES_TO_RADIANS(currentAngle));
float x=cos(DEGREES_TO_RADIANS(currentAngle));
theview.point1=CGPointMake(x, y);
// printf x & y here
[self addSubview:theview];
}
Run Code Online (Sandbox Code Playgroud)
事实上,视图是分配的,但是当我查看视图时,循环内定义的点与point1不同.
实际上,视图的所有迭代似乎都是在循环结束之后分配的,正如在视图的drawrect方法中的printf所述,在调用循环的所有迭代中的所有printf之后调用该方法.如果不清楚,我会看到类似的东西:
x = 1 Y = 1 x = 2 y = 2 x = 3 y = 3 printf来自视图printf来自视图printf的视图
.为什么?提前致谢!