小编mkt*_*kto的帖子

我不希望动画在开始更新,结束更新块为uitableview?

我有一个UITableView使用自定义表格单元格,每个单元格都有一个UIWebView.

因为UIWebView需要花时间加载,所以我想避免不惜一切代价重新加载它们.在某些情况下,我已经加载了所有单元格,但它们的高度混乱了.因此,我需要"重新布局"表而不触发"cellForRow"功能.

  1. 我绝对不能使用reloadData ...因为它会再次重新加载单元格.
  2. 我尝试了tableView.setNeedDisplay,setNeedsLayout等,它们都没有能够重新排列表格单元格
  3. 它工作的唯一方法是调用beginupdates/endupdates块,这个块能够重新启动我的表而不需要激活cellForRow!但是,我不想要动画!这个块产生动画效果,但我不想要它...

我怎样才能解决我的问题?

objective-c uitableview

81
推荐指数
4
解决办法
3万
查看次数

如何在不管理UDID和重新编译的情况下无线分发ios应用程序

我需要知道人们用什么方法无线地分发(内部)iPad应用程序的演示而不必管理UDID?

我不需要像testflight或betabuilder这样的解决方案,所有这些都要求我在apple provisioning配置文件门户中管理UDID.

我问这个问题,因为我看到了另一个工作室做一个更聪明的方式,现在,我想知道他们是如何做到的 - 随着他们给了我们一个链接,我们可以从一个简单的HTML在空中安装的演示应用程序,和配置文件神奇地出现在我的iPad上.所有这一切都发生在没有我告诉他们我的iPad的UDID,因此绝对没有他们重新编译项目.

他们是如何做到的呢?

iphone xcode objective-c

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

从UIWebView中的javascript发送通知到ObjectiveC

我需要知道如何在HTML中使用JavaScript UIWebView来通知Objective-C发生了什么事情?

更确切地说,我正在用HTML播放一些JavaScript动画,我需要提醒动画结束的Objective-C代码.

javascript objective-c ios

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

iOS6 - 社交框架 - SLComposeViewController如何回退到iOS5的TWTweetComposeViewController?

我有一块推特共享代码,适用于iOS6但我需要应用程序才能很好地回退到iOS5 ......

它看起来像这样:

- (void) shareOnTwitter
{
    if([SLComposeViewController instanceMethodForSelector:@selector(isAvailableForServiceType)] != nil)
    {
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            NSLog(@"twitter available");
            SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
            [composeViewController setInitialText:self.sharingText];
            [self.sharingController presentViewController:composeViewController animated:YES completion:nil];
        }
        else
        {
            NSLog(@"twitter not available!");
        }
    }
    else
    {
        // SLComposeViewController not available, this is most likely <iOS6, what to do here?
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,我如何在iOS5中很好地退回(我假设我需要TWTweetComposeViewController)以便我也可以在iOS5中使用本机twitter?

编辑:最后我仍然懒得回退到TWTweetComposeViewController,所以我决定简单回归这个序列:iOS6原生推文 - >安装推特应用程序 - >网址.这是我放在一起的功能,希望它可以帮助某人:

+(BOOL)isSocialFrameworkAvailable
{
     // whether the iOS6 Social framework is available?
    return NSClassFromString(@"SLComposeViewController") != nil;
}

- (void) shareOnTwitterWithText:(NSString*)text andURL:(NSString*)url andImageName:(NSString*)imageName …
Run Code Online (Sandbox Code Playgroud)

twitter objective-c

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

在cellForRowAtIndexPath处从CoreData加载图像会减慢滚动速度

我正在开发一个UITableView,它非常像iOS的原生Photo应用程序:它有很多行,每行有4个图像缩略图.(即每个UITableViewCell都有4个UIImageViews)所有缩略图都是从Core Data加载的.

我已多次修改我的实现,我可以看到性能改进,但仍然无法像Photo应用程序那样顺利滚动.

我需要建议如何正确缓存照片以获得最佳性能.这是我试过的:

1.我的第一次尝试(滚动时非常滞后)

  • 图像以CoreData中的Transformable类型存储.
  • 在cellForRow函数中,每个图像都是从CoreData中即时获取的.

2.第二次尝试(更快,但滚动时仍然有点滞后)

  • 图像与二进制数据类型一起存储,CoreData中勾选了"外部存储"选项.
  • 在cellForRow函数中,每个图像首先从Core Data加载,然后存储到内存中的NSCache中,因此下次cellForRow触发时,如果可用,我们将直接使用NSCache中的UIImage.

使用NSCache缓存从CoreData加载的图像后,滚动显然更快,但由于在NSCache中尚不可用时仍需要从CoreData加载图像,因此滚动仍会不时地生涩.

所以,必须有一个更好的方法,我可以将所有图像预加载到内存中,但由于可能有大量或多行图像,所以我根本没有计划预加载图像.

我还能做些什么来在cellForRowAtIndexPath中更快地加载图像?

objective-c uitableview

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

SwiftUI 无法仅限横向

我正在尝试在 Xcode 13 和 SwiftUI 中构建仅横向的应用程序。我注意到,即使我未选中“纵向”方向,该应用程序仍将以纵向模式运行。我无法强制该应用程序在横向模式下工作。

这是设备方向设置:

在此输入图像描述

这是简单的 hello world SwiftUI:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

预期的:

当设备处于纵向模式时,“Hello world”顺时针旋转 90 度。强制用户将设备旋转到横向模式才能正确查看。

实际的:

“Hello world”在纵向模式下仍然可以正确呈现。为什么?

在此输入图像描述

xcode swiftui xcode13

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

检测另一个视图后面的视图上的触摸?

我有两个观点

  • 顶视图有一些不透明区域和一些透明区域
  • 底部视图有一些可点击的按钮.

顶视图完全覆盖底部视图,但由于顶视图具有透明区域,因此仍可以看到底视图.

但是,由于topview阻止它,我无法再检测到底部视图上的按钮点击,我该怎么办?

无论如何让顶视图将触摸传递到底部视图?

objective-c

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

使用Facebook登录解析:服务器拒绝续订请求,错误代码:190

我正在使用Parse和Facebook的iOS应用程序.

对于Facebook登录,我正在关注此页面上的指南:https://www.parse.com/tutorials/integrating-facebook-in-ios

按照指南,我有这个代码来验证缓存的会话:

// check if this cached session is still valid?
// does nothing if still valid
- (void) validateCachedSession
{
    FBRequest *request = [FBRequest requestForMe];
    [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        if (!error)
        {
            // handle successful response
            LogObvious(@"Facebook session validated. No problem");
        }
        else if ([error.userInfo[FBErrorParsedJSONResponseKey][@"body"][@"error"][@"type"] isEqualToString:@"OAuthException"])
        {   // Since the request failed, we can check if it was due to an invalid session
            LogObvious(@"The facebook session was invalidated. Announce logged Out"); …
Run Code Online (Sandbox Code Playgroud)

facebook ios facebook-ios-sdk parse-platform

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

启动InAppBrowser时,ParseLiveQuery停止工作

我想继续使用ParseLiveQuery监视事件,即使启动InAppBrowser也是如此.但我不能.

我注意到,当启动InAppBrowser时,来自Parse服务器的所有事件似乎都被暂停/暂停.

这是一个简化的代码来演示这个问题:

export interface PageInterface {
  title: string;
  name: string;
  component: any;
  icon: string;
  logsOut?: boolean;
  index?: number;
  tabName?: string;
  tabComponent?: any;
}    
@Component({
  templateUrl: 'app.template.html'
})
export class ConferenceApp {
  @ViewChild(Nav) nav: Nav;
  appPages: PageInterface[] = [...];
  loggedInPages: PageInterface[] = [...];
  rootPage: any;
  browser: any;

  constructor(
    public events: Events,
    public userData: UserData,
    public menu: MenuController,
    public platform: Platform,
    public confData: ConferenceData,
    public parseData: ParseData,
    public storage: Storage,
    public splashScreen: SplashScreen,
    private iab: InAppBrowser
  ) {

    this.rootPage = TabsPage; …
Run Code Online (Sandbox Code Playgroud)

parse-platform inappbrowser ionic-framework ionic2 parse-server

6
推荐指数
0
解决办法
182
查看次数

如何在CoreVideo直播流会话中添加交互式UIView(例如倒数计时器)

我正在关注从iPhone启动Facebook直播会话的示例快速代码:

override func viewDidLoad() {
    super.viewDidLoad()

    liveButton.layer.cornerRadius = 15

    session = VCSimpleSession(videoSize: CGSize(width: 1280, height: 720), frameRate: 30, bitrate: 4000000, useInterfaceOrientation: false)
    contentView.addSubview(session.previewView)
    session.previewView.frame = contentView.bounds
    session.delegate = self
}

func startFBLive() {
    if FBSDKAccessToken.current() != nil {
        FBLiveAPI.shared.startLive(privacy: livePrivacy) { result in
            guard let streamUrlString = (result as? NSDictionary)?.value(forKey: "stream_url") as? String else {
                return
            }
            let streamUrl = URL(string: streamUrlString)

            guard let lastPathComponent = streamUrl?.lastPathComponent,
                let query = streamUrl?.query else {
                    return
            }

            self.session.startRtmpSession(
                withURL: "rtmp://rtmp-api.facebook.com:80/rtmp/",
                andStreamKey: "\(lastPathComponent)?\(query)" …
Run Code Online (Sandbox Code Playgroud)

core-video swift

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