LKS_PerspectiveItemLayer.m 2.8 KB

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