developer tip

UIToolbar의 높이를 변경하는 방법이 있습니까?

copycodes 2020. 12. 6. 21:43
반응형

UIToolbar의 높이를 변경하는 방법이 있습니까?


나는 UIToolbarInterface Builder를 가지고 있으며 44px 높이로 고정되어 있음을 알았습니다. 물론 저는 이것을 더 크게 만들고 싶습니다.

Apple에서이 컨트롤의 크기를 조정할 수 있습니까? 그렇다면 어떻게해야합니까?


물론 프레임을 다르게 설정하면됩니다.

[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];

이렇게하면 툴바의 높이가 35 픽셀이됩니다. 물론이를 위해서는 IBOutlet이 필요하거나 프로그래밍 방식으로 UIToolbar를 생성해야하지만 매우 쉽습니다.


SDK 6에서 작동하지 않으면 다음과 같이 해결할 수 있습니다.

툴바 요소를 선택하고 Editor> Pin> Height를 선택하여 제약 조건을 만듭니다. View Controller Scene으로 이동하여 생성 된 Height (44) 제약 조건을 선택한 다음 원하는 값을 입력합니다.


iPad에서 프레임을 설정하면 툴바를 숨기거나 표시 할 때 높이가 44 픽셀로 다시 재설정된다는 것을 알았습니다. 결국 UIToolbar를 재정의하고 메서드를 변경해야했습니다.

// return 'best' size to fit given size. does not actually resize view. Default is return existing view size
- (CGSize)sizeThatFits:(CGSize)size {
    CGSize result = [super sizeThatFits:size];
    result.height = 55;
    return result;
};     

이렇게하면 숨기기 / 표시로도 높이가 조정됩니다.


iOS 6에서 자동 레이아웃을 사용하는 가장 간단한 방법은 .NET Framework를 재정의하는 UIToolbar 하위 클래스입니다 instrinsicContentSize. 다음은 툴바가 큰 내 앱의 코드입니다. 그 측면과 바닥은 평소와 같이 superview의 측면과 바닥에 고정됩니다.

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}

Xcode 7.1 iOS 9의 경우 자동 레이아웃에서 크기는 44px로 고정됩니다. Xcode 메뉴 옵션 편집기> 핀> 높이가 없습니다. 대신 다음 조치를 수행하십시오.

InterfaceBuilder에서 툴바 요소를 클릭하여 선택합니다. 툴바의 아무 곳이나 Ctrl + 드래그하고 놓으면 상단에 "높이"옵션이 표시된 팝업 메뉴가 표시됩니다.

이제 작업하고 필요에 따라 조정할 높이 제약 조건이 있습니다.


xib 파일을 편집 할 수도 있습니다.

소스 코드로 열고 UIToolbar의 프레임을 정의하는 항목을 찾으십시오.

<string key="NSFrame">{{0,420}, {320,44}}</string>

44의 값을 원하는 크기로 변경하면됩니다.

이렇게하면 도구 모음이 더 커지고 InterfaceBuilder에서 새 크기가 회색으로 표시되고 변경할 수는 없지만 콘센트 나 코드는 필요하지 않습니다.


툴바에 높이 제약이있는 한 UIView에서 상속 된 클래스의 높이를 조정하는 데 도움이되는이 작은 스 니펫을 사용할 수 있습니다.

-(void)setHeightConstraintTo:(CGFloat)height forView:(UIView *)view{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d",          NSLayoutAttributeHeight];
    NSArray *filteredArray = [view.constraints filteredArrayUsingPredicate:predicate];
    if(filteredArray.count > 0){
        NSLayoutConstraint *constraint = filteredArray.firstObject;
        constraint.constant = height;
    }
 }

이것이 Apple에 어떻게 적용되는지 잘 모르겠습니다. 물론 도구 모음을 사용하는 방법에 따라 다릅니다.하지만 기본 UIView를 추가하고 속성 관리자에서 해당 클래스를 UIToolbar로 변경할 수 있습니다. 이렇게하면 바 버튼 항목의 레이아웃을 희생하면서 투명성과 사용자 정의 가능성 (이 경우 높이)이 무료로 제공됩니다.


신속한 솔루션 :

myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)

CGRectMake사용되지 않습니다. 이것은 CGRect. 이렇게하면 도구 모음의 높이가 20으로 설정됩니다. 세그먼트 컨트롤에서도 동일하게 작동합니다.


인터페이스 빌더에서 "사용자 정의 런타임 속성"을 사용할 수도 있습니다.

키 경로가 "Rect"유형의 "프레임"으로 설정된 항목을 추가하고 원하는 값을 설정하기 만하면됩니다.

여기에 이미지 설명 입력

참고 URL : https://stackoverflow.com/questions/2135407/is-there-a-way-to-change-the-height-of-a-uitoolbar

반응형