UIActivityIndicator의 크기를 변경할 수 있습니까?


93

할당하는 동안 크기에 관계없이 고정 크기 만 표시합니다. 그것을 늘릴 수 있습니까?

암호:

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
                     CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                                      UIViewAutoresizingFlexibleRightMargin |
                                      UIViewAutoresizingFlexibleTopMargin |
                                      UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

답변:


50

크기는 스타일에 따라 고정됩니다. 표준화 된 인터페이스 요소이므로 API가 조작하는 것을 좋아하지 않습니다.

그러나 아마도 스케일링 변환을 수행 할 수 있습니다. 그러나 그것이 시각적으로 어떻게 영향을 미칠지 확실하지 않습니다.

UI 디자인 관점에서 보면 일반적으로 이러한 공통적 인 표준화 된 요소는 그대로 두는 것이 좋습니다. 사용자는 특정 요소가 특정 크기로 나타나고 특정 사물을 의미한다고 배웠습니다. 표준 모양을 변경하면 인터페이스 문법이 변경되고 사용자가 혼란스러워집니다.


14
특정 상황에서는 훌륭합니다. 그러나 이것이 스플래시 화면에 있고 당신이 보는 모든 것이 로고와 아마도 화면 중앙에있는이 작은 스피너라면, 그것은 약간 어리석은 것처럼 보입니다. 나는 애플이 하나의 크기가 UI 요소의 개념이라고 생각한다는 것을 믿을 수 없다.
Ben Leggiero 2015

6
@BenLeggiero 당신은 말하는 UIActivityIndicatorViewStyleWhiteLarge것이 아니라 대신 작은 크기에 대해 말하고 있습니까? 이 Large버전은 빈 화면에서도 좋은 크기 라고 생각하기 때문 입니다.
의미 - 중요한

2
.whiteLarge해! 고마워! 나는 또한 설정 UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))하고 activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38). 6 + / 7 + 화면에서 기본 화면은 너무 작습니다
rockhammer

1
크기를 늘리기 위해 크기 조정 변환을 수행하면 흐릿하게 보입니다.
Gandalf458

164

다음은 15px 너비의 활동 표시기를 만듭니다.

#import <QuartzCore/QuartzCore.h>

...

UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];

TechZen의 답변에 대한 감정은 이해하지만 UIActivityIndicator의 크기를 비교적 적은 양으로 조정하는 것은 실제로 Apple의 표준화 된 인터페이스 관용구를 위반하는 것이라고 생각하지 않습니다. 활동 표시기가 20px이든 15px이든 사용자의 해석을 바꾸지 않습니다. 무슨 일이 일어나고 있는지.


1
그리고 활동 표시기가 아이 패드에서 너무 작아서 webView 중간에 하나가 있습니다 ...
hokkuk

4
이것은 픽셀을 확대하는 것처럼 보이므로 불행히도 많은 양에는 허용되지 않습니다.
prewett 2014

68

Swift 3.0 및 Swift 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)

3
정확히 내가 필요한 것. 이것이 최고의 답변이어야합니다.
nocdib

나는 단순한 문제에 대한 한 줄 솔루션을 좋아합니다! 이제 유일한 문제는 안티 ​​앨리어싱 방법입니다. 두 배 크기에 애플 TV에 약간의 거친 보이는
미셸 Dall'Agata

@ MicheleDall'Agata는 여전히 좋은 것보다 사용자 정의를 만들고 싶다면 iOS의 좋은 품질 그래픽 진행률 표시 줄에 대한 기본 솔루션이 없지만 앱 크기와 앱 성능의 기본 bcoz를 사용하는 것이 좋습니다
Harshil Kotecha

@HarshilKotecha 사실 나는 나중에 IB에서 (적어도 tvOS의 경우) "Large White"라고 불리는 활동 장비에 대한 스타일이 있다는 것을 알게되었습니다. 저것은 내가 목표로 삼은 일반 것보다 두 배의 비율을 가지고 있습니다. 규칙은 너무 작아서 단일 셀에 적합합니다.
Michele Dall'Agata

45

UIActivityIndicator의 크기를 조정할 수 있습니다.

CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;

원래 크기는 1.0f입니다. 이제 그에 따라 크기를 늘리거나 줄입니다.


3
let transform = CGAffineTransformMakeScale(1.5, 1.5) activityIndicator.transform = transform
Rohit Funde

11

Swift3

 var activityIndicator = UIActivityIndicatorView()
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
    activityIndicator.transform = transform
    activityIndicator.center = self.view.center
    activityIndicator.startAnimating()
    self.view.addSubview(activityIndicator)

3

다음은 Swift 3.0에서 작동하는 확장이며 0 스케일링을 방지하기 위해 검사합니다 (또는 금지하려는 값).

extension UIActivityIndicatorView {
    func scale(factor: CGFloat) {
        guard factor > 0.0 else { return }

        transform = CGAffineTransform(scaleX: factor, y: factor)
    }
}

40 점 (2x)으로 확장하려면 다음과 같이 호출하십시오.

activityIndicatorView.scale(factor: 2.0)


1

당신이 할 수있는 최선은 whiteLarge스타일을 사용하는 것 입니다. let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

의 크기를 늘리면 UIActivityIndicatorView당신이 사진에서 볼 수 있듯이, 적절한 지표의 크기를 변경하지 않습니다.작은 표시기 "큰"표시기


-1

activityIndicator.transform = CGAffineTransform (scaleX : 1.75, y : 1.75);

이것은 표시기의 크기를 변환하는 데 도움이되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.