小编Kir*_*sar的帖子

在iOS中推迟深层链接

我们正在尝试在我们的某个iOS应用程序中实施延迟深层链接,以鼓励用户邀请他们的朋友使用该应用程序,并根据他们的推介链接发生的安装数量来奖励用户.基本上类似于TapStream的产品.

考虑这个例子:

因此,UserA在他们想要的任何网络上分享他们的链接"ourappURL.com/refer?id=userA".UserB单击该链接,将其带到Safari,然后将它们退回到UserB下载应用程序的App Store页面.

当UserB打开应用程序时,应用程序会检查它们所引用的引荐ID(如果有).在此示例中,引荐ID将是"userA",因为它是引用链接中的ID.该应用程序然后将此发送到我们的服务器,我们授予UserA一个推荐信用.

我试图将这个问题分解为其核心部分.我相信第一部分是获取用户引荐链接的网页,以将引荐ID保存到应用可以访问它的某个地方的设备.但由于iOS的沙盒特性,我不确定这是否可行.

我知道这基本上是可行的,因为许多广告提供商都能够跟踪广告系列的安装情况(例如,请参阅移动应用跟踪).

deep-linking ios

44
推荐指数
3
解决办法
2万
查看次数

UIStackView错误计算UIImageView高度

我有一个UIStackView包含UICollectionViewCell在一个社交网络上的帖子(类似于Instagram的单元格).它UIStackView包含一个作者标题(自定义UIView),一个UIImageView用于内容图像,一个UILabel用于帖子正文,一个UIToolbar用于操作.最终视图看起来像这样.

通过设置大小调整单元来设置UICollectionViewCell的高度,如下所示:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
      NTVFeedBlogCollectionViewCell *cell = [[NTVFeedBlogCollectionViewCell alloc] initWithFrame:CGRectMake(10.0f, 0.0f, collectionView.frame.size.width - 20.0f, 900000.0)];

      // ...
      // Configure the cell
      // ...

      [cell setNeedsLayout];
      [cell layoutIfNeeded];
      CGSize size = [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

      return CGSizeMake(CGRectGetWidth(collectionView.frame) - 20.0f, size.height);

}
Run Code Online (Sandbox Code Playgroud)

问题是UIImageView似乎增加了UICollectionViewCell 的大小,而没有增加图像视图的大小.这是我向图像视图添加大图像时的结果.所需的结果是图像保持1:1的宽高比,受限于UIStackView的宽度.

身体标签与其余内容之间的间隙大小根据我使用的图像而变化.这使我相信,仅仅UIStackView考虑到图像大小,仅考虑细胞的大小,因为在视觉上图像视图是正确的大小.正如您在第一张贴图中看到的那样,当图像视图的图像尚未设置时,单元格完美展现.

以下是堆栈视图,图像视图和标签的设置代码:

self.stackView = [[UIStackView alloc] initWithFrame:CGRectZero];
self.stackView.translatesAutoresizingMaskIntoConstraints …
Run Code Online (Sandbox Code Playgroud)

objective-c uiimageview ios autolayout uistackview

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

如何将NSData加载到AVPlayerItem?

这是我关于如何在iOS中加密mp3文件的帖子中的后续问题.

我如何使用NSData而不是文件路径/ URL将轨道加载到AVPlayerItem?

谢谢

cocoa-touch objective-c nsdata ios avplayer

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

在iOS 8键盘扩展中实现自动更正

我正在创建一个自定义iOS 8键盘作为宠物项目.

我正在尝试尽可能准确地复制系统键盘,但是从头开始构建它.

我基本上已经完成了这件事.我遇到的最后一个障碍是在键盘上添加自动更正功能.有没有办法让自动更正的行为与常规系统键盘上的相同?

UILexicon文档是很稀疏.

编辑:

在这方面取得一些进展.UILexicon的requestSupplementaryLexiconWithCompletion:方法似乎只是从我的设备的联系人和键盘快捷方式返回结果.然后我继续看看如何自动更正 NSString并找到UITextChecker类,它已经从iOS 3.2开始提供.

使用这种方法,我可以对单个单词实现自动更正建议,但我仍在研究添加上下文感知自动更正的能力(例如,将"北极猴"更正为"北极猴").

keyboard ios ios8 ios-app-extension uilexicon

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

完成块的返回结果

因此,我正在尝试在项目的Twitter API(以及其他)之上构建一个层,我需要找到一种方法将Twitter操作的结果返回到抽象层.

现在我的设置是这样的,例如:

-(NSDictionary *)sendTweet:(Tweet *)tweet {
        __block NSMutableDictionary *responseDictionary;

    NSLog(@"Sending tweet");

    NSMutableDictionary *twitterRequestDictionary = [[NSMutableDictionary alloc] init];
    [twitterRequestDictionary setObject:tweet.tweetBody forKey:@"status"];

    TWRequest *request = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1/statuses/update.json"]
                                             parameters:twitterRequestDictionary
                                          requestMethod:TWRequestMethodPOST];
    [request setAccount:self.userAccount];


    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        responseDictionary  = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"Response dictionary: %@", responseDictionary);
        return responseDictionary;
    }];
Run Code Online (Sandbox Code Playgroud)

}

但是因为'performRequestWithHandler:'方法返回'void',所以最后一行会导致错误.

我还尝试在块之外放置'return'语句,并在发现本文后锁定代码块部分的执行:http://omegadelta.net/2011/05/10/how-to-wait-换IOS的方法,以完成块到结束

仍然没有运气.

我希望有人可以通过这种方式来解决这个问题(或者建议一种更好的方法来返回数据).

twitter objective-c ios objective-c-blocks

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