我们正在尝试在我们的某个iOS应用程序中实施延迟深层链接,以鼓励用户邀请他们的朋友使用该应用程序,并根据他们的推介链接发生的安装数量来奖励用户.基本上类似于TapStream的产品.
考虑这个例子:
因此,UserA在他们想要的任何网络上分享他们的链接"ourappURL.com/refer?id=userA".UserB单击该链接,将其带到Safari,然后将它们退回到UserB下载应用程序的App Store页面.
当UserB打开应用程序时,应用程序会检查它们所引用的引荐ID(如果有).在此示例中,引荐ID将是"userA",因为它是引用链接中的ID.该应用程序然后将此发送到我们的服务器,我们授予UserA一个推荐信用.
我试图将这个问题分解为其核心部分.我相信第一部分是获取用户引荐链接的网页,以将引荐ID保存到应用可以访问它的某个地方的设备.但由于iOS的沙盒特性,我不确定这是否可行.
我知道这基本上是可行的,因为许多广告提供商都能够跟踪广告系列的安装情况(例如,请参阅移动应用跟踪).
我有一个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) 我正在创建一个自定义iOS 8键盘作为宠物项目.
我正在尝试尽可能准确地复制系统键盘,但是从头开始构建它.
我基本上已经完成了这件事.我遇到的最后一个障碍是在键盘上添加自动更正功能.有没有办法让自动更正的行为与常规系统键盘上的相同?
该UILexicon文档是很稀疏.
编辑:
在这方面取得一些进展.UILexicon的requestSupplementaryLexiconWithCompletion:方法似乎只是从我的设备的联系人和键盘快捷方式返回结果.然后我继续看看如何自动更正 NSString并找到UITextChecker类,它已经从iOS 3.2开始提供.
使用这种方法,我可以对单个单词实现自动更正建议,但我仍在研究添加上下文感知自动更正的能力(例如,将"北极猴"更正为"北极猴").
因此,我正在尝试在项目的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的方法,以完成块到结束
仍然没有运气.
我希望有人可以通过这种方式来解决这个问题(或者建议一种更好的方法来返回数据).
ios ×5
objective-c ×3
autolayout ×1
avplayer ×1
cocoa-touch ×1
deep-linking ×1
ios8 ×1
keyboard ×1
nsdata ×1
twitter ×1
uiimageview ×1
uilexicon ×1
uistackview ×1