小编Ale*_*der的帖子

用户注销时返回初始视图控制器

我正在开发一个使用Facebook集成的应用程序,log in系统现在运行正常.但是,当用户点击时,我似乎无法返回到我的初始视图控制器log out.

这是我的概述storyboard:

故事板的截图

当用户点击blue button(在顶部)时,我想返回到开头.我该怎么做才能实现这一目标?正如你所看到的,我有多个Navigation Controllers,我只是用Push-segues来到那里.但是,我确实使用了SWRevealViewController,你可以在中间看到.

我尝试过[self.navigationController popToRootViewControllerAnimated:YES];什么都没做.

有什么建议?有谁熟悉SWRevealViewController它可能对我的Navigation堆栈做了什么?任何帮助将不胜感激!

谢谢.

logout uiviewcontroller ios facebook-login swrevealviewcontroller

10
推荐指数
1
解决办法
2万
查看次数

使用channelId获取YouTube频道个人资料照片

因此,我正在尝试使用channelId获取YouTube频道的频道配置文件图片.

我想通过将channelId添加到URL并以此方式获取图像来实现.Facebook有类似的地方使用此URL:

http://graph.facebook.com/user_id/picture?type=square
Run Code Online (Sandbox Code Playgroud)

Google+也有,在这里找到了这个问题.可悲的是,它不适用于YouTube(我无法让它工作)

希望有人有解决方案!

提前致谢 :)

youtube youtube-api youtube-channels

9
推荐指数
3
解决办法
1万
查看次数

带有动态内容的UIScrollView

我正在尝试实现一个UIScrollView,但每个教程都处理预设数量的项目.

我所拥有的是多个UITextField,但文本字段的数量各不相同.基本上,只要一个 textField文本包含文本,就会在其下方显示另一个空文本,允许用户填写无限数量的文本字段.

一旦用户将内容输入到上一个文本中,我的代码就会创建一个新的文本字段.该x-coordinates的,这是一样的前一个,但y-coordinates新一等于以前+ 5px的高度.

我正在使用故事板,而且我把原版textField放在了一个UIScrollView.我已将此连接scrollView到我的代码,并以这种方式添加新的文本字段:[self.scrollView addSubview:newTextField];

但是,当数量textFields超过时scrollView,我无法滚动显示已添加的新数据.

我该怎么做呢?我不认为我完全得到了这个setContentSize东西,所以它可能与此有关.这里有一些图片和代码来解释我的问题:

添加新文本字段的代码:

UITextField *newTextField = [[UITextField alloc]initWithFrame:CGRectMake(textField.frame.origin.x, textField.frame.origin.y + textField.frame.size.height+5, textField.frame.size.width, textField.frame.size.height)];
newTextField.placeholder = @"Add more text";
newTextField.borderStyle = UITextBorderStyleNone;
newTextField.font = [UIFont systemFontOfSize:14];
newTextField.autocorrectionType = UITextAutocorrectionTypeYes;
newTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
newTextField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
newTextField.returnKeyType = UIReturnKeyDone;
[newTextField setTag:textFieldTag];
newTextField.delegate = self;
[self.scrollView addSubview:newTextField];
Run Code Online (Sandbox Code Playgroud)

故事板:

在这里,您可以看到我如何将原始文本字段放在我的滚动视图中

在这里,您可以看到我如何将原始文本字段放在我的滚动视图中

它在模拟器中的外观如何:

在文本字段中输入文本时,会发生以下情况:

在文本字段中输入文本时,会发生以下情况:

前一个文本框下方会出现一个空文本字段

前一个文本框下方会出现一个空文本字段.

但是,当您超过ScrollView时,会发生这种情况

您无法再看到新的文本字段,因为它位于scrollView下方

您无法再看到新的textField,因为它位于scrollView的边界下方.你无法滚动显示它. …

xcode objective-c uiscrollview ios

7
推荐指数
1
解决办法
1万
查看次数

UIAlertController圆角矩形文本字段

我在为我设置文本字段时遇到一些问题UIAlertController.

我正在使用此代码添加舍入textfieldalertcontroller:

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
  textField.placeholder = @"placeholder";
  textField.borderStyle = UITextBorderStyleRoundedRect;
}];
Run Code Online (Sandbox Code Playgroud)

但结果如下:

在此输入图像描述

如何删除外边框背景颜色?所以它看起来像他们在本教程中所拥有的:http://useyourloaf.com/blog/2014/09/05/uialertcontroller-changes-in-ios-8.html.

谢谢!

uitextfield uialertview ios uialertcontroller

7
推荐指数
1
解决办法
797
查看次数

在spritekit中模拟水/使sprite"浮动"在水面上

我正在尝试为我的游戏加水.除了不同的背景颜色,它没有多少.但是,我希望player-sprite它漂浮在它上面(或者在其中间).如果玩家只是从下面走进水里,我希望他漂浮到顶端.如果他摔倒了,我希望他慢慢改变方向并漂浮起来.

当他在水中时,我试着让重力为负,但这给了我一些稍微不想要的效果.例如,当他(玩家)浮出水面时,正常的重力会将他推倒,水将推动他,等等.最终,玩家将在水中"弹跳",从一端推到另一端.当他浮出水面时,我希望他能够平静地留在水面上.我怎样才能做到这一点?

这是我在我的代码update-loop:

SKNode *backgroundNodeAtPoint = [_bgLayer nodeAtPoint:_ball.position];
  if ([backgroundNodeAtPoint.name isEqualToString:@"WATER"]) {
    self.physicsWorld.gravity = CGVectorMake(self.physicsWorld.gravity.dx, 2);
  } else {
    if (self.physicsWorld.gravity.dy != -4) {
        self.physicsWorld.gravity = CGVectorMake(self.physicsWorld.gravity.dx, -4);
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上,2当玩家在水中时,这会改变我的引力,否则将其更改为-4除非已经存在-4.

谢谢!

game-physics ios sprite-kit

6
推荐指数
1
解决办法
3757
查看次数

UIToolbar与UISegmentedControl AutoLayout(/全宽)

我有一个UIViewControllerUIToolBar下面的UINavigationBarUITableView低于.UIBarButtonItem我唯一的UIToolBar就是UISegmentedControl如下截图所示: 在此输入图像描述

但是,如何在App Store应用程序中使用UISegmentedControl/ UIBarButtonItem来拉伸以填充UIToolBar类似内容? 在此输入图像描述

请记住,我也支持横向模式,因此在旋转设备时必须自动拉伸以适应新的宽度.这是我希望实现的目标AutoLayout,但据我所知,我不能AutoLayout在内部使用UIToolBar.

有什么建议(除了UIToolbar用a 替换UIView)?

objective-c uisegmentedcontrol uitoolbar ios autolayout

6
推荐指数
2
解决办法
2784
查看次数

使用终端中的cURL发布数组

我正在尝试为应用程序构建Web服务,因此数据存储在我拥有的在线数据库中.我目前正在构建PHP文件,我很好奇,我怎么能POST一个array使用cURL终端Mac应用程序.

你看,应用程序将向web服务发送一个由字符串组成的数组.例如像这样的东西["String 1", "String 2", "String 3"].但是为了测试我将用于将这些值插入数据库的代码是否有效,我需要以某种方式将此数据传递给Web服务.到目前为止,我一直在使用Mac终端应用程序并发布这样的curl -F "user_id=1" localhost/test/webservice.php",但我不知道如何传递数组.

到目前为止我所拥有的是:

curl -F "user_id=1" -F "title=Random title 123" -F "num_items=2" -F "items[]=[Item 1, Item 2]" localhost/test/webservice.php
Run Code Online (Sandbox Code Playgroud)

但我不认为这是传递数组的正确方法,因为我相信我的php文档中的代码是正确的,但是存储在我的数据库中的值实际上是单词数组.我认为这items[]是启动它的正确方法,但我不太确定=-sign 之后会发生什么.

有人知道这样做的正确方法吗?

如果这恰好是正确的,那么我在数组中存储数据的方式就出了问题.我正在使用stmt和这样的bind_param()关键字:

$items = $_POST["items"]; // This is the array

$stmt = $this->db->prepare('INSERT INTO items (item_id, user_id, title) VALUES (?, ?, ?)');
$stmt->bind_param('iis', $item_id, $user_id, $items);
$stmt->execute();
$stmt->close(); …
Run Code Online (Sandbox Code Playgroud)

php database arrays terminal curl

5
推荐指数
1
解决办法
8753
查看次数

CloudKit删除公共数据库中的用户记录

当用户第一次启动您的应用程序时,CloudKit 创建唯一的用户记录并添加到公共数据库中。出于调试目的,我尝试删除它,以便 CloudKit 可以生成一个与之前不同的新的唯一 ID。

但是,当尝试使用 CloudKit 仪表板删除所述记录时,我收到以下错误:

invalid attempt to delete user records directly
Run Code Online (Sandbox Code Playgroud)

当尝试使用该deleteRecordWithID:方法在代码中删除它时,我遇到了同样的错误。

有谁知道删除用户记录的正确方法吗?有可能吗?是否有其他解决方案可以通过强制创建新记录来解决我的问题?

cloudkit

5
推荐指数
1
解决办法
552
查看次数

更改状态后未调用didChangeAuthorizationStatus

我有一个问题,即locationManager:didChangeAuthorizationStatus在用户(1)接受或(2)拒绝我使用位置服务的请求后没有被调用.通过发出不同的NSLog陈述,我得出的结论是,当我请求授权时调用该方法,但是当用户做出选择时则不会.有没有人有同样的问题?如果是这样,你是如何解决它们的?

这是我初始化我的方式location manager:

if (_locationManager == nil) {
  NSLog(@"Creating location manager");
  _locationManager = [[CLLocationManager alloc] init];
  _locationManager.delegate = self;
  _locationManager.distanceFilter = kCLDistanceFilterNone;
  _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
  NSLog(@"Not determined");
  if ([[NSUserDefaults standardUserDefaults] boolForKey:@"dynamicNotifOn"]) {
    [_locationManager requestAlwaysAuthorization];
  } else {
    [_locationManager requestWhenInUseAuthorization];
  }
} else if (...) {...
Run Code Online (Sandbox Code Playgroud)

这是方法:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
  NSLog(@"Callback");
  if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) {
    NSLog(@"Authorized");
    [_mainButton setIsLoading:NO];
    [self startGettingLocation];
  } …
Run Code Online (Sandbox Code Playgroud)

objective-c cllocationmanager ios

4
推荐指数
1
解决办法
7176
查看次数

将UIImage剪切到UIBezierPath(不屏蔽)

我正在尝试UIImage根据给定剪辑a UIBezierPath,但是结果图像保留了原始形状和大小。我希望形状和大小类似于路径,即新图像的可见内容。

看下面的例子:

输入图像,输入路径,实际结果和所需结果

以下是我用来屏蔽给定路径的图像的代码:

func imageByApplyingClippingBezierPath(_ path: UIBezierPath) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(CGSize(
        width: size.width,
        height: size.height
    ), false, 0.0)
    let context = UIGraphicsGetCurrentContext()!
    context.saveGState()

    path.addClip()
    draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()!

    context.restoreGState()
    UIGraphicsEndImageContext()

    return newImage
}
Run Code Online (Sandbox Code Playgroud)

一种解决方案是在蒙版后裁剪图像,但理想情况下,我希望一次性完成该操作尽可能简单和有效。

任何解决方案/提示将不胜感激。

uiimage ios uibezierpath uigraphicscontext swift

4
推荐指数
1
解决办法
1320
查看次数