小编dji*_*i33的帖子

定义如何显示Open Graph Post

我正在向Facebook成功发布自定义Open Graph对象/操作.

我们的生产和登台环境都有自己的FB应用程序,它们的配置相同(除了在我们的生产应用程序中,对象和操作都得到批准,我们的应用程序详细信息页面也是如此).

出于某种原因,暂存是使用带有标题/说明的较大照片发布的.生产帖子的图像较小,所有文本都在右侧.

我不记得在升级时做了什么特别的事情,但最后,我们希望生产中的帖子看起来像是在分段时做的.知道我需要调整哪个设置?

更新: 我已经了解到大图像的故事被称为"以图像为主导的故事".在上面的链接中提到的关于如何获得这种新布局的唯一事情是:

较大的新闻Feed故事布局由Open Graph帖子使用大于200 x 200px的图像大小生成.

使用FB调试器,您可以看到FB抓取的两个图像都是600x600:

在此输入图像描述

facebook opengraph facebook-opengraph

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

在iOS7中处理一个视图控制器的自动旋转

我已经阅读了很多关于SO的答案,但我似乎无法在iOS7上进行自动旋转.

我只需要一个视图控制器来旋转,所以我不想在我的Info.plist中设置旋转设置.

据我了解Apple的文档,单个视图控制器可以通过简单地覆盖两个方法来覆盖全局旋转设置(来自Info.plist).Info.plist设置为仅允许Portrait,我的视图控制器实现以下方法:

- (NSUInteger)supportedInterfaceOrientations
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

- (BOOL)shouldAutorotate
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我在旋转时看到那些NSLog语句但没有旋转.

如果我使用正确的旋转设置配置Info.plist,我的视图将旋转,但如果我尝试依赖我的视图控制器则不会.

不确定它是否重要,但我试图旋转的视图来自使用自动布局的.xib.

此外,我的ViewController以模态方式呈现,并包含在导航控制器中.我试过单独呈现视图控制器,但这不起作用.我也尝试在UINavigationController中添加一个类别,以便从它的topViewController获取它的自动旋转方向.

iphone objective-c rotation ios ios7

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

调整容器视图的高度以匹配嵌入式UITableView

使用Storyboards和Autolayout,我有一个UIVcController作为主视图的UIVcController.我在滚动视图中嵌入了几个容器视图.其中一些嵌入式容器视图包含UITableViews,每个视图都具有不同高度的单元格.我需要tableView的高度足够大,以便一次显示所有单元格,因为在tableView上将禁用滚动.

在主UIViewController中,必须定义容器视图的高度,以使滚动视图正常工作.这是有问题的,因为一旦所有不同高度的单元格完成渲染,我无法知道我的tableView有多大.如何在运行时调整容器视图的高度以适应我的非滚动UITableView?

到目前为止,我已经完成了以下工作:

// in embedded UITableViewController
// 
- (void)viewDidLoad {
  // force layout early so I can determine my table's height
  [self.tableView layoutIfNeeded];

  if (self.detailsDelegate) {
        [self.detailsTableDelegate didDetermineHeightForDetailsTableView:self.tableView];
  }
}

// in my main UIViewController
// I have an IBOutlet to a height constraint set up on my container view
// this initial height constraint is just temporary, and will be overridden
// once this delegate method is called
- (void)didDetermineHeightForDetailsTableView:(UITableView *)tableView
{
  self.detailsContainerHeightConstraint.constant = tableView.contentSize.height;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,我对结果很满意.但是,我有一两个容器视图要添加,它们将具有非滚动的tableViews,我不想为每个容器视图创建一个新的委托协议.我认为我不能制定我具有通用性的协议. …

objective-c storyboard uitableview ios autolayout

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

Facebook API - 实例化的位置以及如何正确实现handleOpenURL

我正在为我的iPhone应用程序使用Facebook API,并有两个问题:

所有文档/示例似乎都将所有内容放在appDelegate中:实例化Facebook对象并在appDidFinishLaunching中进行授权,并覆盖应用程序:handleOpenURL方法.

在我的应用程序中,除非用户导航到特定视图并按下按钮,否则我不希望发生任何事情.我理解在该视图中,我将实例化Facebook对象并在按钮处理程序方法中启动授权,但是如何处理应用程序的覆盖:handleOpenURL?我必须使用与我的特定视图控制器中使用的不同的FB对象(在我的应用程序委托中实例化).

  1. 这种情况是否需要单身人士?或者它是一个很好的设计解决方案让我的appDelegate实例化FB对象,并通过我的程序中的任何其他地方访问它?

    在FB文档中,它们告诉您覆盖应用程序:handleOpenURL方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [facebook handleOpenURL:url]; 
}
Run Code Online (Sandbox Code Playgroud)
  1. 如上所述,这是否意味着您的应用程序只能打开一种类型的URL?如果您的应用程序需要响应多于一个,您需要解析url参数以确定要采取的操作,对吗?

谢谢!

facebook facebook-graph-api ios facebook-ios-sdk

8
推荐指数
1
解决办法
2660
查看次数

AFNetworking的UIImageView类别的预缓存映像

当我的应用加载时,我下拉了99个对象的JSON表示.

每个对象都有一个'image_url'字段,我将其传递给AFNetworking setImageWithURLRequest.

我的图像加载到tableView中,因此,只有前几个单元格对其图像进行请求.直到我向下滚动,才会发出后续图像请求.

在我下拉初始数据集后,我希望能够启动后台进程并下载最初不可见的95个左右的对象,并以这样的方式缓存它们setImageWithURLRequest:它已经有一个缓存的图像.

虽然AFImageCache是​​私有的,所以我不确定这是否可行.我知道我可以使用NSURLCache缓存,但后来我有两个独立的,孤立的缓存,这也不理想.

我是唯一不使用AFNetworking的UIImageView类别的选择吗?

这些答案让我这么想:

iOS使用AFImageCache缓存图像似乎不起作用
如何在使用AFNetworking的setImageWithURL时配置缓存

caching objective-c nsurlcache ios afnetworking

8
推荐指数
2
解决办法
7202
查看次数

使用Ionic/Cordova构建变体

Ionic/Cordova是否支持构建变体(如Xcode中的目标或Gradle中的产品风味)?我需要在相同的代码库中创建Lite和付费版本.

xcode android ios cordova ionic-framework

8
推荐指数
1
解决办法
391
查看次数

在CTCallCenter callEventHandler中取消隐藏视图非常慢

在原始问题没有回答之后重新发布更简洁和专注的问题.在另一天的研究之后,还要对问题进行更深入的了解:

在我的app delegate(didFinishLaunching)中,我设置了一个callEventHandleron CTCallCenter.我的想法是,当callState发生变化时,我会发布一个包含userInfo dict的通知call.callState.在我看来,我观察到这个通知,当 userInfodict包含值时CTCallDisconnected,我想取消隐藏视图.

我遇到的问题是,无需担心的方面,几乎是一致的,约7秒钟.其他一切工作正常,我知道这是因为我NSLog在取消隐藏之前和之后,这些日志立即出现,但是看不见的视图仍然滞后7秒.

这是我的代码:

appDidFinishLaunching:

self.callCenter = [[CTCallCenter alloc] init];
    self.callCenter.callEventHandler = ^(CTCall* call) {
        // anounce that we've had a state change in our call center
        NSDictionary *dict = [NSDictionary dictionaryWithObject:call.callState forKey:@"callState"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"CTCallStateDidChange" object:self userInfo:dict];
    };
Run Code Online (Sandbox Code Playgroud)

然后,当用户点击拨打电话号码的按钮时,我会收听此通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctCallStateDidChange:) name:@"CTCallStateDidChange" object:nil];
Run Code Online (Sandbox Code Playgroud)

然后,在ctCallStateDidChange中:

- (void)ctCallStateDidChange:(NSNotification *)notification
{
   NSLog(@"121");
   NSString *callInfo = [[notification userInfo] objectForKey:@"callState"];
   if ([callInfo isEqualToString:CTCallStateDisconnected]) {
      NSLog(@"before show"); …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c grand-central-dispatch ios core-telephony

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

使用iCloud Apple ID匿名登录应用程序

根据CloudKit概述:

CloudKit还允许您的用户使用他们的iCloud Apple ID匿名登录您的应用,而无需共享他们的个人信息.

我在他们的文档中找不到关于此功能的任何其他内容.我已经有了一个带有我自己后端的应用程序,因此我不需要任何CloudKit提供的后端即服务功能,但我想利用用户登录iCloud帐户,与我们目前使用Facebook和Twitter的方式大致相同.

是否可以使用CloudKit,或者您是否还必须利用其BAAS功能才能利用登录?

iphone ios icloud ios8 cloudkit

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

动态调整UICollectionView的补充视图(包含多行UILabel)

在UICollectionView的补充视图(标题)中,我有一个多行标签,我想截断为3行.

在此输入图像描述

当用户点击标题(补充)视图中的任何位置时,我想将UILabel切换为0行,以便显示所有文本,并相应地增加collectionView的补充视图的高度(最好是动画的).点击标题后会发生以下情况:

在此输入图像描述

到目前为止,这是我的代码:

// MyHeaderReusableView.m

// my gesture recognizer's action
- (IBAction)onHeaderTap:(UITapGestureRecognizer *)sender
{
    self.listIntro.numberOfLines = 0;

    // force -layoutSubviews to run again
    [self setNeedsLayout];
    [self layoutIfNeeded];
}

- (void)layoutSubviews
{
    [super layoutSubviews];

    self.listTitle.preferredMaxLayoutWidth = self.listTitle.frame.size.width;
    self.listIntro.preferredMaxLayoutWidth = self.listIntro.frame.size.width;
    [self layoutIfNeeded];

    CGFloat height = [self systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

    self.frame = ({
        CGRect headerFrame = self.frame;
        headerFrame.size.height = height;
        headerFrame;
    });

    NSLog(@"height: %@", @(height));
}
Run Code Online (Sandbox Code Playgroud)

当我height在结尾处登录时layoutSubviews,其值为149而标签被截断并numberOfLines设置为3.在点击headerView,设置numberOfLines为0并强制布局传递后,高度将记录为163.5.大!

唯一的问题是整个headerView不会增长,并且单元格不会被推下.

如何动态更改collectionView的补充视图(最好是动画)的高度?

我知道UICollectionViewFlowLayout headerReferenceSize,collectionView:layout:referenceSizeForHeaderInSection:但不太确定我在这种情况下如何使用它们.

objective-c ios autolayout uicollectionview

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

-fontWithSize返回不同​​的字体对象

更新1

我找到了解决办法:

// instead of
font = [font fontWithSize:pointSize];

// i can do this and get the correct font back
font = [UIFont fontWithName:font.fontName size:pointSize]
Run Code Online (Sandbox Code Playgroud)

我正在使用Nick Lockwood的HTMLLabel类将HTML转换为一个尊重HTML中样式的NSAttributedString.在大多数情况下,它很有效.

但是,我在我的应用程序中使用自定义字体,出于某种原因,我的字体总是以粗体显示.我没有使用系统字体的这个问题.我把它缩小到这个方法:

- (UIFont *)font
{
    // ** Code Path 1 **
    UIFont *font = _styles[HTMLFont];
    if ([font isKindOfClass:[NSString class]])
    {
        font = [UIFont fontWithName:(NSString *)font size:17.0f];
    }
    NSInteger pointSize = [_styles[HTMLTextSize] floatValue] ?: font.pointSize;
    if (self.bold) {
        if (self.italic)
        {
            font = [font boldItalicFontOfSize:pointSize];
        }
        else
        {
            font = [font boldFontOfSize:pointSize]; …
Run Code Online (Sandbox Code Playgroud)

fonts objective-c nsattributedstring uifont ios

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