小编Hot*_*ard的帖子

iOS 8 UITableView背景色外观

Xcode 6 beta 6,尝试在外观代理中更改所有UITableView的背景颜色:

[[UITableView appearance] setBackgroundColor:[UIColor redColor]]
Run Code Online (Sandbox Code Playgroud)

但似乎它不起作用.

重现步骤:

1创建单个视图项目

2在故事板中将UITableView添加到ViewController

3将代理设置为查看控制器并更改IB中的背景:

在此输入图像描述

4添加动态单元并配置数据源:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1Identifier" forIndexPath:indexPath];
  return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  return 60.f;
}
Run Code Online (Sandbox Code Playgroud)

5在app委托中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
  [[UITableView appearance] setBackgroundColor:[UIColor redColor]];

  return YES;
}
Run Code Online (Sandbox Code Playgroud)

6运行app并观察不正确的颜色:

在此输入图像描述

任何建议如何解决?为每个表设置背景颜色看起来不是一个好的解决方案.

iphone objective-c uitableview ios ios8

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

如何设置NSURLRequest缓存过期?

我正在使用AFNetworking并且需要在一个响应中缓存数据几分钟.所以我在app delegate中设置了NSUrlCache,然后在我的请求中设置它:

NSMutableURLRequest *request = //obtain request; 
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
Run Code Online (Sandbox Code Playgroud)

然后如何设置到期日期:如果数据加载时间超过n分钟,请询问服务器响应而不是磁盘响应?

编辑:

假设服务器不支持缓存,我需要在代码中管理它.

caching objective-c ios

12
推荐指数
2
解决办法
6600
查看次数

应用程序激活后恢复AVPlayer视频播放

我从AVPlayer编写自定义播放器进行视频播放.根据Apple docs设置的视频层:

    self.player = [IPLPlayer new];
    self.player.playerLayer = (AVPlayerLayer *)self.playerView.layer;
Run Code Online (Sandbox Code Playgroud)

self.playerView是那些文档的常用类:

    @implementation PlayerView

+ (Class) layerClass {
    return [AVPlayerLayer class];
}

- (AVPlayer *)player {
    return [(AVPlayerLayer *)[self layer] player];
}

- (void)setPlayer:(AVPlayer *) player {
    [(AVPlayerLayer *) [self layer] setPlayer:player];
}
Run Code Online (Sandbox Code Playgroud)

问题是:当关闭应用程序(主页按钮)或阻止屏幕时,视频播放停止,当恢复仅恢复音频播放时,屏幕上的图像仍然是块屏幕之前的图像 - 它是完全静态的并且记录更改帧.

如何在屏幕被阻止后恢复视频播放?

似乎我必须注册通知,并在应用程序变为活动后恢复视频层:

    -(void)registerNotification
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(willEnterBackground)
                                                 name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didEnterForeground)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
}

-(void)unregisterNotification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}


-(void)willEnterBackground
{
    NSLog(@"willEnterBackground");
    [self.playerView willEnterBackground];
}

-(void)didEnterForeground
{
    NSLog(@"didEnterForeground");
    [self.playerView didEnterForeground];
}
Run Code Online (Sandbox Code Playgroud)

iphone ios avplayer avplayerlayer

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

SwiftUI 文本在有多行时不适合全宽

Text当有多行时,SwiftUI 的视图存在问题。所以只要看看:

var body: some View {
    Text("Some word Some word Some word Some word")
        .frame(maxWidth: .infinity, alignment: .leading)
        .border(.red)
        .padding(16)
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而添加一个词改变了包装:

在此输入图像描述

结果,视图看起来不像预期的那样,对于更大的字体,差异变得更加明显:

在此输入图像描述 在此输入图像描述 在此输入图像描述

环境:iOS 15.2、Xcode 13 / Xcode 14b 预览和模拟器

UILabel是否有可靠的解决方案可以像不使用 那样包装字符串UIViewRepresentable

PS:.fixedSize()已经尝试了+的不同组合.frame(idealWidth:),但没有运气

swiftui

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

iOS 64位模拟器真的是64位吗?

根据主要的64位更改 int和长大小是4和8字节.但是当我使用以下代码在iOS 64位模拟器上运行时:

NSLog(@"NSInteger size: %i", sizeof(NSInteger));
NSLog(@"int       size: %i", sizeof(int));
NSLog(@"long      size: %i", sizeof(long));
Run Code Online (Sandbox Code Playgroud)

输出是

 NSInteger size: 4
 int       size: 4
 long      size: 4
Run Code Online (Sandbox Code Playgroud)

所以,尺寸告诉我们另一个.真实设备上的输出是什么?

objective-c ios

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