내가 (특정 방법을 ALLOC 필요) 인터페이스 빌더에서 사용자 지정 버튼을 추가 할 수 있기 때문에 custom buttoncustom UICollectionViewCell크기 조정 UICollectionViewCell하고 자동 레이아웃
에 추가하려고 해요를 사용하여 내용이다, 나는 추가 명확한 배경을 가진 자리 표시 자 역할을하는 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의 전체 너비를 얻지 못하는 것을 볼 수 있습니다. 또한 정확하게 중심을 맞추지 않습니다.
그래서 나는이 개 질문이있어 : 자동 레이아웃을 사용하는 동안, 그것은 컨테이너에 UIView의 전체 폭을 사용하여 뷰에 사용자 정의 버튼을 추가 할 수있는 방법1).
2) 카드의 왼쪽과 오른쪽에 공백을 추가 할 수있는 방법이 있습니까?
첫 번째 질문에서 "자동 레이아웃을 사용하는 동안"이라고 말하지만 버튼과 해당 컨테이너 사이에는 자동 레이아웃을 사용하지 않습니다. 단추의 프레임을 설정하는 대신 구속 조건을 사용하여 컨테이너보기의 네면에 모두 고정하십시오. – rdelmar
@rdelmar 답변 해 주셔서 감사합니다. 내가 어떻게 할 수 있니? – Galip