LKS_PerspectiveItemLayer.m 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifdef SHOULD_COMPILE_LOOKIN_SERVER
  2. //
  3. // LKS_PerspectiveItemLayer.m
  4. // LookinServer
  5. //
  6. // Created by Li Kai on 2019/5/17.
  7. // https://lookin.work
  8. //
  9. #import "LKS_PerspectiveItemLayer.h"
  10. @interface LKS_PerspectiveItemUnselectableLayer : CALayer
  11. @end
  12. @implementation LKS_PerspectiveItemUnselectableLayer
  13. - (CALayer *)hitTest:(CGPoint)p {
  14. return nil;
  15. }
  16. @end
  17. @interface LKS_PerspectiveItemLayer ()
  18. @property(nonatomic, strong) LKS_PerspectiveItemUnselectableLayer *selectedMaskLayer;
  19. @property(nonatomic, strong) LKS_PerspectiveItemUnselectableLayer *contentLayer;
  20. @end
  21. @implementation LKS_PerspectiveItemLayer
  22. - (instancetype)init {
  23. if (self = [super init]) {
  24. self.borderWidth = 1;
  25. self.contentLayer = [LKS_PerspectiveItemUnselectableLayer layer];
  26. [self addSublayer:self.contentLayer];
  27. self.selectedMaskLayer = [LKS_PerspectiveItemUnselectableLayer layer];
  28. self.selectedMaskLayer.backgroundColor = LookinColorRGBAMake(74, 144, 226, .25).CGColor;
  29. self.selectedMaskLayer.opacity = 0;
  30. [self addSublayer:self.selectedMaskLayer];
  31. NSDictionary<NSString *, id<CAAction>> *actions = @{NSStringFromSelector(@selector(bounds)) : [NSNull null],
  32. NSStringFromSelector(@selector(position)) : [NSNull null],
  33. NSStringFromSelector(@selector(borderColor)) : [NSNull null],
  34. };
  35. self.actions = actions;
  36. }
  37. return self;
  38. }
  39. - (void)layoutSublayers {
  40. [super layoutSublayers];
  41. self.selectedMaskLayer.frame = self.bounds;
  42. self.contentLayer.frame = self.bounds;
  43. }
  44. - (void)setDisplayItem:(LookinDisplayItem *)displayItem {
  45. _displayItem = displayItem;
  46. [self reRender];
  47. }
  48. - (void)reRender {
  49. if (!self.displayItem) {
  50. NSAssert(NO, @"");
  51. return;
  52. }
  53. if (self.displayItem.isExpandable && self.displayItem.isExpanded) {
  54. self.contentLayer.contents = (__bridge id)(self.displayItem.soloScreenshot.CGImage);
  55. } else {
  56. self.contentLayer.contents = (__bridge id)(self.displayItem.groupScreenshot.CGImage);
  57. }
  58. if (self.displayItem.isSelected) {
  59. self.selectedMaskLayer.opacity = 1;
  60. self.borderColor = LookinColorRGBAMake(74, 144, 226, 1).CGColor;
  61. } else {
  62. self.selectedMaskLayer.opacity = 0;
  63. self.borderColor = LookinColorRGBAMake(160, 168, 189, .6).CGColor;
  64. }
  65. if (self.displayItem.displayingInHierarchy && !self.displayItem.inHiddenHierarchy) {
  66. self.contentLayer.opacity = 1;
  67. self.opacity = 1;
  68. } else {
  69. self.opacity = 0;
  70. self.contentLayer.opacity = 0;
  71. }
  72. }
  73. - (CALayer *)hitTest:(CGPoint)p {
  74. if (self.hidden || self.opacity == 0) {
  75. return nil;
  76. }
  77. return [super hitTest:p];
  78. }
  79. @end
  80. #endif /* SHOULD_COMPILE_LOOKIN_SERVER */