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并观察不正确的颜色:
任何建议如何解决?为每个表设置背景颜色看起来不是一个好的解决方案.
我正在使用AFNetworking并且需要在一个响应中缓存数据几分钟.所以我在app delegate中设置了NSUrlCache,然后在我的请求中设置它:
NSMutableURLRequest *request = //obtain request;
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
Run Code Online (Sandbox Code Playgroud)
然后如何设置到期日期:如果数据加载时间超过n分钟,请询问服务器响应而不是磁盘响应?
编辑:
假设服务器不支持缓存,我需要在代码中管理它.
我从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) 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:)
,但没有运气
根据主要的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)
输出是
Run Code Online (Sandbox Code Playgroud)NSInteger size: 4 int size: 4 long size: 4
所以,尺寸告诉我们另一个.真实设备上的输出是什么?