我尝试添加custom button为custom UICollectionViewCell调整大小UICollectionViewCell,它是利用自动版式
因为我不能在Interface Builder中添加自定义按钮(需要用特定的方法来ALLOC吧)的内容,我加入一个UIView作为一个占位符,它有一个清晰的背景(在这个问题中用于演示黑色)。
这是它的样子:
然后在自定义类代码为UICollectonViewCell我做的:
- (void)awakeFromNib {
// Initialization code
self.btnAddOrRemove = [[HTPressableButton alloc] initWithFrame:self.btnContainerView.bounds buttonStyle:HTPressableButtonStyleRounded];
self.btnAddOrRemove.center = CGPointMake(self.center.x, self.btnAddOrRemove.center.y);
//self.btnContainerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
- (void)layoutSubviews
{
[super layoutSubviews];
CGRect bounds = self.bounds;
if (self.shadowWidth != bounds.size.width)
{
if (self.shadowWidth == 0)
{
[self.layer setMasksToBounds:NO ];
[self.layer setShadowColor:[[UIColor blackColor ] CGColor ] ];
[self.layer setShadowOpacity:0.5 ];
[self.layer setShadowRadius:5.0 ];
[self.layer setShadowOffset:CGSizeMake(0 , 0) ];
self.layer.cornerRadius = 5.0;
}
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRect:bounds ] CGPath ] ];
if ([ChosenCategory getInstance].doesExist) {
if ([ChosenCategory getInstance].category == self.ingredientCategory) {
[self.btnAddOrRemove setTitle:NSLocalizedString(@"Edit profile", nil) forState:UIControlStateNormal];
[self.btnAddOrRemove setButtonColor:[UIColor ht_mediumColor]];
[self.btnAddOrRemove setShadowColor:[UIColor ht_mediumDarkColor]];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateNormal];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateHighlighted];
[self.btnAddOrRemove addTarget:self action:@selector(toDetail:) forControlEvents:UIControlEventTouchUpInside];
}
else {
[self.btnAddOrRemove setTitle:NSLocalizedString(@"Choose Profile", nil) forState:UIControlStateNormal];
[self.btnAddOrRemove setButtonColor:[UIColor ht_bitterSweetColor]];
[self.btnAddOrRemove setShadowColor:[UIColor ht_bitterSweetDarkColor]];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateNormal];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateHighlighted];
[self.btnAddOrRemove addTarget:self action:@selector(chosenProfile:) forControlEvents:UIControlEventTouchUpInside];
}
}
else {
[self.btnAddOrRemove setTitle:NSLocalizedString(@"Choose profile", nil) forState:UIControlStateNormal];
[self.btnAddOrRemove setButtonColor:[UIColor ht_mediumColor]];
[self.btnAddOrRemove setShadowColor:[UIColor ht_mediumDarkColor]];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateNormal];
[self.btnAddOrRemove setTitleColor:[UIColor ht_ashColor] forState:UIControlStateHighlighted];
[self.btnAddOrRemove addTarget:self action:@selector(chosenProfile:) forControlEvents:UIControlEventTouchUpInside];
}
[self.btnContainerView addSubview:self.btnAddOrRemove];
self.shadowWidth = bounds.size.width;
self.lblSummary.preferredMaxLayoutWidth = self.lblSummary.frame.size.width;
}
}
但你可以看到自定义按钮没有得到containerView的全部宽度。它也没有正确居中。
所以我有2个问题:
1)如何添加自定义按钮,它使用了容器的UIView的全宽视图,而使用自动版式。
2)有没有一种方法可以将空白添加到卡的左侧和右侧?
您在第一个问题中说“使用自动布局时”,但没有在按钮和其容器之间使用自动布局。不要设置按钮的框架,而应将其固定到容器视图的所有四边,并带有约束条件。 – rdelmar 2015-02-05 17:28:38
@rdelmar谢谢你的回答。我怎么能这样做? – Galip 2015-02-05 17:48:00