我想要做的就是为所有状态的按钮添加背景颜色.但是我希望在tvOS故事板中使用系统按钮时保持"免费"获得的自动焦点阴影.到目前为止,我还没有找到允许这种情况的组合.
或者,我也有兴趣在按钮聚焦时以编程方式添加阴影的方法,但是没有子按钮(我还没有尝试过),我也不知道该怎么做.
本质上,我有一组数据NSDictionary,但为方便起见,我设置了一些NSArrays,数据以几种不同的方式排序和过滤.数据将通过不同的线程(块)进入,我想确保一次只有一个块修改我的数据存储.
今天下午我遇到了设置调度队列的麻烦,随后偶然发现了一个关于@synchronized这个问题的帖子,这看起来几乎就像我想做的那样.
所以我现在拥有的是......
// a property on my object
@property (assign) dispatch_queue_t matchSortingQueue;
// in my object init
_sortingQueue = dispatch_queue_create("com.asdf.matchSortingQueue", NULL);
// then later...
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
dispatch_async(_sortingQueue, ^{
// do stuff...
});
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以用以下内容替换所有这些吗?
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
@synchronized (self) {
// do stuff...
};
}
Run Code Online (Sandbox Code Playgroud)
......无论如何,两者之间有什么区别?我应该考虑什么?
我有两个UIScrollView实例,我想让它们同时缩放.
有没有经验呢?
我正在使用它NSNotificationCenter告诉我的对象何时缩放.最初我以为我可以以某种方式进入当前可见的矩形,并且只是打电话zoomToRect:,但我没有看到这样做的方法.我现在拥有的是设置zoomScale和contentOffset属性.它看起来像这样:
- (void)registerForZoomNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveZoomNotification:)
name:ZOOM_NOTIFICATION_IDENTIFIER
object:nil];
}
- (void)receiveZoomNotification:(NSNotification*)notification {
UIScrollView *currentScrollView = (UIScrollView*)[notification object];
// zoomLevel
[(UIScrollView*)self.view setZoomScale:currentScrollView.zoomScale animated:NO];
// contentOffset
[(UIScrollView*)self.view setContentOffset:currentScrollView.contentOffset animated:NO];
}
#pragma mark -
#pragma mark UIScrollViewDelegate
- (void)scrollViewDidZoom:(UIScrollView *)pageScrollView {
[[NSNotificationCenter defaultCenter] postNotificationName:ZOOM_NOTIFICATION_IDENTIFIER object:pageScrollView];
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,看起来非常不稳定.想法有人吗?我应该采取不同的方法吗?
编辑:我应该澄清两个滚动视图同时不可见.它们在完全相同的时间滚动并不重要,只有滚动视图与滚动完成后的另一个滚动视图处于相同的缩放级别(和可见的矩形).
我正在开发一个以Q Number格式读取一些字符串的应用程序。
Java实现将这样的字符串转换为:
int i = Integer.parseInt("00801600", 16);
System.out.println("Number from Integer.parseInt = " + i); // i=8394240
float j = Integer.reverseBytes(i);
System.out.println("After Integer.reverseBytes = " + j); // j=1474560.0
float k = j / 65536; //TWO_POWER_OF_16 = 65536
System.out.println("After Q division = " + k); // k=22.5
Run Code Online (Sandbox Code Playgroud)
我玩过很多swift函数的组合,(希望)这非常接近:
let i: Int = Int("00801600", radix: 16) ?? 0
let istr = "Number from Int = \(i)"
let j: Double = Double(i.byteSwapped)
let jstr = "After byte swapping = \(j)" …Run Code Online (Sandbox Code Playgroud)