效果如上图所示
//写到获取信息后的请求完成里面
//数据示例*********
{
Latas = (
330ML,
500ML
);
Marca = (
Refriango
);
Latas = (
330ML,
500ML
);
Marca = (
Refriango
);
}
********************/
for
(
UIView
*view
in
_selectScrollView
.
subviews
) {
if (view != _nameLabel && view != logoImageView && view != priceLabel && view != line_scroll ) {
[view removeFromSuperview ];
}
}
selectYES = [ NSMutableArray arrayWithArray :[[ _dataDict objectForKey : @"attr" ] componentsSeparatedByString : @"," ]];
_moreHeight = 120 ;
int j = 0 ;
int k = 1 ;
int l = 0 ;
//BOOL _default = NO;
for ( NSString *key in details) {
NSMutableArray *arr = [ NSMutableArray arrayWithArray :[details objectForKey :key]];
j = 0 ;
if (view != _nameLabel && view != logoImageView && view != priceLabel && view != line_scroll ) {
[view removeFromSuperview ];
}
}
selectYES = [ NSMutableArray arrayWithArray :[[ _dataDict objectForKey : @"attr" ] componentsSeparatedByString : @"," ]];
_moreHeight = 120 ;
int j = 0 ;
int k = 1 ;
int l = 0 ;
//BOOL _default = NO;
for ( NSString *key in details) {
NSMutableArray *arr = [ NSMutableArray arrayWithArray :[details objectForKey :key]];
j = 0 ;
for
(
int
i=
0
; i<arr.
count
; i++) {
NSString
*str = [
NSString
stringWithFormat
:
@"%@"
,[arr
objectAtIndex
:i]];
NSDictionary *dictSize = [ NSDictionary dictionaryWithObjectsAndKeys :[ UIFont systemFontOfSize : 14.0 ], NSFontAttributeName , nil ];
CGSize size = [str boundingRectWithSize : CGSizeMake ( _selectScrollView . bounds . size . width - 100 , 20 ) options : NSStringDrawingUsesLineFragmentOrigin attributes :dictSize context : nil ]. size ;
UILabel *label = [[ UILabel alloc ] init ];
label. font = [ UIFont systemFontOfSize : 14.0 ];
label. textAlignment = NSTextAlignmentCenter ;
label. layer . cornerRadius = 2.0 ;
label. layer . masksToBounds = NO ;
label. textColor = [ UIColor blackColor ];
label. layer . borderWidth = 0.5 ;
label. tag = 1000 *k + i;
label. layer . borderColor = ColorWihtRGB ( 175 , 175 , 175 , 1.0 ). CGColor ;
if (i == 0 ) {
label. frame = CGRectMake ( 10 , _moreHeight + 10 +l* 10 , size. width + 10 , 20 );
_prevWith = size. width + 20 ;
_moreThanWideHeight = _moreHeight + 10 ;
} else {
label. frame = CGRectMake ( _prevWith + 10 , _moreThanWideHeight +l* 10 , size. width + 20 , 20 );
_prevWith += size. width + 30 ;
}
if ( _prevWith > _selectScrollView . bounds . size . width - 20 ) {
_prevWith = 10 ;
label. frame = CGRectMake ( _prevWith , _moreThanWideHeight + 30 +l* 10 , size. width + 20 , 20 );
_prevWith = size. width + 30 ;
_moreThanWideHeight += 30 ;
//_moreHeight = _moreThanWideHeight;
j++;
}
label. text = str;
[ _selectScrollView addSubview :label];
UITapGestureRecognizer *tap = [[ UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (attributeSelect:)];
label. userInteractionEnabled = YES ;
[label addGestureRecognizer :tap];
for ( NSString *str in selectYES ) {
if ([str isEqualToString :label. text ]) {
label. layer . borderColor = ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ;
break ;
}
}
}
UILabel *nameLabel = [[ UILabel alloc ] initWithFrame : CGRectMake ( 10 , _moreHeight - 25 +l* 10 , _selectScrollView . bounds . size . width - 20 , 40 )];
nameLabel. text = key;
nameLabel. font = [ UIFont systemFontOfSize : 14.0 ];
[ _selectScrollView addSubview :nameLabel];
_moreHeight += 40 +j* 30 ;
k++;
l++;
}
UILabel *nameLabel = [[ UILabel alloc ] initWithFrame : CGRectMake ( 10 , _moreHeight +l* 10 - 5 , _selectScrollView . bounds . size . width - 20 , 20 )];
nameLabel. text = NSLocalizedString ( @" 数量 " , "Localizable" );
nameLabel. font = [ UIFont systemFontOfSize : 14.0 ];
[ _selectScrollView addSubview :nameLabel];
bgView_num . frame = CGRectMake ( 10 , _moreHeight + 20 +l* 10 , 93 , 28 );
[ _selectScrollView addSubview : bgView_num ];
NSDictionary *dictSize = [ NSDictionary dictionaryWithObjectsAndKeys :[ UIFont systemFontOfSize : 14.0 ], NSFontAttributeName , nil ];
CGSize size = [str boundingRectWithSize : CGSizeMake ( _selectScrollView . bounds . size . width - 100 , 20 ) options : NSStringDrawingUsesLineFragmentOrigin attributes :dictSize context : nil ]. size ;
UILabel *label = [[ UILabel alloc ] init ];
label. font = [ UIFont systemFontOfSize : 14.0 ];
label. textAlignment = NSTextAlignmentCenter ;
label. layer . cornerRadius = 2.0 ;
label. layer . masksToBounds = NO ;
label. textColor = [ UIColor blackColor ];
label. layer . borderWidth = 0.5 ;
label. tag = 1000 *k + i;
label. layer . borderColor = ColorWihtRGB ( 175 , 175 , 175 , 1.0 ). CGColor ;
if (i == 0 ) {
label. frame = CGRectMake ( 10 , _moreHeight + 10 +l* 10 , size. width + 10 , 20 );
_prevWith = size. width + 20 ;
_moreThanWideHeight = _moreHeight + 10 ;
} else {
label. frame = CGRectMake ( _prevWith + 10 , _moreThanWideHeight +l* 10 , size. width + 20 , 20 );
_prevWith += size. width + 30 ;
}
if ( _prevWith > _selectScrollView . bounds . size . width - 20 ) {
_prevWith = 10 ;
label. frame = CGRectMake ( _prevWith , _moreThanWideHeight + 30 +l* 10 , size. width + 20 , 20 );
_prevWith = size. width + 30 ;
_moreThanWideHeight += 30 ;
//_moreHeight = _moreThanWideHeight;
j++;
}
label. text = str;
[ _selectScrollView addSubview :label];
UITapGestureRecognizer *tap = [[ UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (attributeSelect:)];
label. userInteractionEnabled = YES ;
[label addGestureRecognizer :tap];
for ( NSString *str in selectYES ) {
if ([str isEqualToString :label. text ]) {
label. layer . borderColor = ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ;
break ;
}
}
}
UILabel *nameLabel = [[ UILabel alloc ] initWithFrame : CGRectMake ( 10 , _moreHeight - 25 +l* 10 , _selectScrollView . bounds . size . width - 20 , 40 )];
nameLabel. text = key;
nameLabel. font = [ UIFont systemFontOfSize : 14.0 ];
[ _selectScrollView addSubview :nameLabel];
_moreHeight += 40 +j* 30 ;
k++;
l++;
}
UILabel *nameLabel = [[ UILabel alloc ] initWithFrame : CGRectMake ( 10 , _moreHeight +l* 10 - 5 , _selectScrollView . bounds . size . width - 20 , 20 )];
nameLabel. text = NSLocalizedString ( @" 数量 " , "Localizable" );
nameLabel. font = [ UIFont systemFontOfSize : 14.0 ];
[ _selectScrollView addSubview :nameLabel];
bgView_num . frame = CGRectMake ( 10 , _moreHeight + 20 +l* 10 , 93 , 28 );
[ _selectScrollView addSubview : bgView_num ];
_selectScrollView.contentSize = CGSizeMake(screenWidth-50, _moreThanWideHeight+30+30+30+l*10);
//点击切换产品
//_propertyDict 产品关联字典 数据示例************
"details":{
"246":"Refriango,500ML",
"243":"Refriango,330ML"
}
*************************/
- (
void
)attributeSelect:(
UITapGestureRecognizer
*)tap {
selectYES
= [[
NSMutableArray
alloc
]
init
];
for ( UILabel *label in _selectScrollView . subviews ) {
if ([label isKindOfClass :[ UILabel class ]]) {
//NSLog(@"%@",label.layer.borderColor);
label. textColor = [ UIColor blackColor ];
if (label. tag / 1000 == tap. view . tag / 1000 ) {
if (label. tag == tap. view . tag ) {
NSLog ( @"111 == %ld" ,label.tag);
label. layer . borderColor = ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ;
[ selectYES addObject :label. text ];
} else {
if (label. layer . borderColor == ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ) {
[ selectYES addObject :label. text ];
} else {
NSLog ( @"222 == %ld" ,label.tag);
label. layer . borderColor = ColorWihtRGB ( 175 , 175 , 175 , 1.0 ). CGColor ;
}
}
} else {
if (label. layer . borderColor == ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ) {
[ selectYES addObject :label. text ];
} else {
NSLog ( @"222 == %ld" ,label.tag);
//label.layer.borderColor = ColorWihtRGB(175, 175, 175, 1.0).CGColor;
}
}
}
}
BOOL _select = NO ;
for ( NSString *key11 in _propertyDict ) {
NSArray *arr = [ NSMutableArray arrayWithArray :[[ _propertyDict objectForKey :key11] componentsSeparatedByString : @"," ]];
NSPredicate *filterPredicate = [ NSPredicate predicateWithFormat : @"NOT (SELF IN %@)" ,arr];
// 过滤数组
NSArray *reslutFilteredArray = [ selectYES filteredArrayUsingPredicate :filterPredicate];
if (reslutFilteredArray. count == 0 ) {
if ([key11 integerValue ] == [ self . good_id integerValue ]) {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 240 / 255.0 green : 75 / 255.0 blue : 75 / 255.0 alpha : 1.0 ]];
buyToCar . selected = YES ;
return ;
}
self . good_id = key11;
_select = YES ;
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 240 / 255.0 green : 75 / 255.0 blue : 75 / 255.0 alpha : 1.0 ]];
buyToCar . selected = YES ;
break ;
} else {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 175 / 255.0 green : 175 / 255.0 blue : 175 / 255.0 alpha : 1.0 ]];
buyToCar . selected = NO ;
}
}
if (_select) {
//NSLog(@"%@",good_id);
[ self good_info ];//获取商品详情的接口调用
} else {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 175 / 255.0 green : 175 / 255.0 blue : 175 / 255.0 alpha : 1.0 ]];
for ( UILabel *label in _selectScrollView . subviews ) {
if ([label isKindOfClass :[ UILabel class ]]) {
//NSLog(@"%@",label.layer.borderColor);
label. textColor = [ UIColor blackColor ];
if (label. tag / 1000 == tap. view . tag / 1000 ) {
if (label. tag == tap. view . tag ) {
NSLog ( @"111 == %ld" ,label.tag);
label. layer . borderColor = ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ;
[ selectYES addObject :label. text ];
} else {
if (label. layer . borderColor == ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ) {
[ selectYES addObject :label. text ];
} else {
NSLog ( @"222 == %ld" ,label.tag);
label. layer . borderColor = ColorWihtRGB ( 175 , 175 , 175 , 1.0 ). CGColor ;
}
}
} else {
if (label. layer . borderColor == ColorWihtRGB ( 240 , 75 , 75 , 1.0 ). CGColor ) {
[ selectYES addObject :label. text ];
} else {
NSLog ( @"222 == %ld" ,label.tag);
//label.layer.borderColor = ColorWihtRGB(175, 175, 175, 1.0).CGColor;
}
}
}
}
BOOL _select = NO ;
for ( NSString *key11 in _propertyDict ) {
NSArray *arr = [ NSMutableArray arrayWithArray :[[ _propertyDict objectForKey :key11] componentsSeparatedByString : @"," ]];
NSPredicate *filterPredicate = [ NSPredicate predicateWithFormat : @"NOT (SELF IN %@)" ,arr];
// 过滤数组
NSArray *reslutFilteredArray = [ selectYES filteredArrayUsingPredicate :filterPredicate];
if (reslutFilteredArray. count == 0 ) {
if ([key11 integerValue ] == [ self . good_id integerValue ]) {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 240 / 255.0 green : 75 / 255.0 blue : 75 / 255.0 alpha : 1.0 ]];
buyToCar . selected = YES ;
return ;
}
self . good_id = key11;
_select = YES ;
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 240 / 255.0 green : 75 / 255.0 blue : 75 / 255.0 alpha : 1.0 ]];
buyToCar . selected = YES ;
break ;
} else {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 175 / 255.0 green : 175 / 255.0 blue : 175 / 255.0 alpha : 1.0 ]];
buyToCar . selected = NO ;
}
}
if (_select) {
//NSLog(@"%@",good_id);
[ self good_info ];//获取商品详情的接口调用
} else {
[ buyToCar setBackgroundColor :[ UIColor colorWithRed : 175 / 255.0 green : 175 / 255.0 blue : 175 / 255.0 alpha : 1.0 ]];
buyToCar.selected = NO;
}