私はセルに2つのサブビューを持っています。私はthis linkから見つけた良いアプローチと聞こえるので、シャドウビュー用とコーナー半径用の2つです。だから私はIBDessignablesでObjective-Cでそれを作ろうとしました。セルのサイズが同じでも動的なサイズのシャドーが別のセルに表示されていても、cornerviewは正常であればすべてうまく動作します。IBDesignablesを持つセルのコーナー半径を持つシャドウ
- セルのビュー階層 - ここ
-- UITableViewCell
-- contentView
-- shadowView
-- CornerView
シャドウビューの私のコードです
ShadowView.h
IB_DESIGNABLE
@interface ShadowView : UIView
@property (nonatomic) IBInspectable CGFloat cornerRadius;
@property (nonatomic) IBInspectable CGFloat shadowRadius;
@property (nonatomic) IBInspectable CGSize shadowOffset;
@end
ShadowView.m
@implementation ShadowView
-(void)setup{
self.cornerRadius = 5.0f;
self.shadowRadius = 2.0f;
self.shadowOffset = CGSizeMake(0, 0);
self.backgroundColor = [UIColor clearColor];
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
- (void)drawRect:(CGRect)rect {
[self updateLayerProperties];
}
- (void)updateLayerProperties {
self.layer.shadowOffset = self.shadowOffset;
self.layer.shadowRadius = self.shadowRadius;
self.layer.shadowOpacity = 0.3;
self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.cornerRadius].CGPath;
self.layer.masksToBounds = NO;
self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;
}
@end
誰でも正確な問題が分かっていますか?コーナービューの境界は完全には動作しますが、シャドウビューでは機能しません。誰もがそれをテストしたい場合
デモファイル
そしてここでは、デモファイル..ですhttps://www.dropbox.com/s/myxjyj5pu3ey3aw/demoDesignables.zip?dl=0
つまり、影が下のセルをカバーしているということですか? – Suragch
はい.. cornerviewはシャドービューのサブビューと同じサイズですが、その細かい影は動的なセルの高さのために別のセルをカバーしています –
私はそれが何をしようとしているのか本当に分かりません。細胞間の間隔がそれより大きければそれを修正するだろうか?あなたが望むものを示すイメージが役立ちます。 – Suragch